这是我的文件结构:
-- Dir1
---- Dockerfile
---- index.php
-- Dir2
---- Dockerfile
---- index.php
-- SharedLibrary
---- class.php
我想用docker-compose
构建多个图像,而且它们都需要另一个目录中的共享文件。
但是Dockerfile
无法添加具有相对路径的文件。
通常要做什么来解决这个问题?
顺便说一句,它不仅可以在本地docker上运行,因此不应该与卷一起处理。
其他信息:
shellscript
,将所需文件复制到每个目录并运行docker-compose
。答案 0 :(得分:1)
您将必须将Dockerfile
移到根目录(在您的情况下,在SharedLibrary
上方)。
Docker有一个叫做“ Build Context”的东西。通常是Dockerfile所在的目录。构建器只能访问该目录及其以下的文件,而不能访问该文件。
您可以创建两个Dockerfile,例如:
-<root>
-- Dir1
---- index.php
-- Dir2
---- index.php
-- SharedLibrary
---- class.php
-- Dockerfile.app1
-- Dockerfile.app1
-- docker-compose.yaml
然后是docker-compose.yaml
中的specify those files。
我个人会做不同的事情:将两者合并成multistage Dockerfile,并在target
中指定一个docker-compose.yaml
。您最终会得到类似的东西:
# docker-compose.yml
version: '3.8'
services:
app1:
build:
context: . # default
dockerfile: Dockerfile # default
target: app1
app2:
build:
context: . # default
dockerfile: Dockerfile # default
target: app2