我正在使用docker和docker-compose来构建我的应用程序。现在有两个开发人员在github上托管该项目。
我们的项目结构是:
现在我们有./dockerfiles/dev/docker-compose.yml
这样:
app:
container_name: sup-dev
build: ./build
和./dockerfiles/dev/build/Dockerfile
:
FROM sup:dev
# docker-compose tries to find .profile relative to build dir:
# ./dockerfiles/dev/build
COPY .profile /var/www/
我们像这样运行容器:
docker-compose up -d
一切正常,但由于操作系统不同,我们将代码放在不同的地方:/home/aliance/www/project
代表我,/home/user/other/path/project
代表第二个开发人员。所以我不能只将音量指令添加到Dockerfile
。
现在我们以错误的方式解决这个问题:
- 我正在使用lsyncd和我的个人配置将文件传输到容器中
- 第二个使用volume
指令进入Dockerfile
但未提交。
您可能知道如何为Dockerfile
编写统一的docker-compose
代码,以便将代码从不同的路径转移到应用容器中?
答案 0 :(得分:2)
主机上的文件路径无关紧要。你为什么需要绝对路径?
您可以使用相对于docker-compose.yml
的路径,因此对于两个开发人员来说它们应该是相同的。
Dockerfile中的VOLUME
指令始终与构建上下文相关,因此如果需要,可以使用以下内容:
app:
container_name: sup-dev
build: ..
dockerfile: build/Dockerfile
这样Dockerfile
的构建上下文将是项目根目录。
答案 1 :(得分:0)
也许您应该将Dockerfile保留在项目的根目录下。然后你可以在Dockerfile中添加一条指令:
COPY ./ /usr/src/app/
或(不推荐用于产品)
VOLUME /usr/src/app
+(运行容器时的选项,因为我不知道docker-compose)
-v /path/to/your/code:/usr/src/app