我花了很多时间试图找出一个好的模式,以及如何更好地解释此功能支持所发生的情况。我意识到,最好的解释方式如下...
- Dockerfile:只会看到其自身相对路径下的文件
- 上下文:“空间”中您要共享的文件和Dockerfile将复制到的位置
如此说来,这是Dockerfile的一个示例,该示例需要重用一个名为 start.sh
Docker文件
它 ALWAYS
从其相对路径加载,并以其自身的当前目录作为local
您指定路径的参考。
COPY start.sh /runtime/start.sh
档案
考虑到这个想法,我们可以考虑为Dockerfile创建多个副本以构建特定的东西,但是它们都需要访问 start.sh
。
./all-services/
/start.sh
/service-X/Dockerfile
/service-Y/Dockerfile
/service-Z/Dockerfile
./docker-compose.yaml
考虑到这种结构和上面的文件,这是一个docker-compose.yml
docker-compose.yaml
- 在此示例中,
shared
上下文目录是runtime
目录。
- 这里的思维模式相同,认为该目录下的所有文件都移到了所谓的
context
。
- 同样,只需指定要复制到相同目录的Dockerfile。您可以使用指定
dockerfile
。
- 主要内容所在的目录是要设置的实际上下文。
的docker-compose.yml
是如下
version: "3.3"
services:
service-A
build:
context: ./all-service
dockerfile: ./service-A/Dockerfile
service-B
build:
context: ./all-service
dockerfile: ./service-B/Dockerfile
service-C
build:
context: ./all-service
dockerfile: ./service-C/Dockerfile
all-service
设置为上下文,共享文件 start.sh
以及每个都指定的Dockerfile被复制到那里dockerfile
。
- 每个人都有自己的构建方式,共享启动文件!
干杯!