我正在使用docker和docker-组合来构建我的应用程序。github上托管的项目现在有两个开发人员。
我们的项目结构是:
- docker-compose.yml
现在我们有了这样的./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
,以便从不同的路径将代码卷到app容器中?
发布于 2015-11-25 21:44:16
主机上的文件路径不重要。你为什么需要绝对的途径?
您可以使用相对于docker-compose.yml
的路径,因此对于两个开发人员来说,它们应该是相同的。
Dockerfile中的VOLUME
指令总是相对于构建上下文,因此,如果需要,可以使用如下内容:
app:
container_name: sup-dev
build: ..
dockerfile: build/Dockerfile
这样,Dockerfile
的构建上下文将成为项目根。
发布于 2015-11-25 14:08:55
也许您应该将Dockerfile保存在项目的根上。然后可以在Dockerfile中添加一条指令:
COPY ./ /usr/src/app/
或(prod中不推荐)
VOLUME /usr/src/app
-v /path/to/your/code:/usr/src/app
https://stackoverflow.com/questions/33916793
复制相似问题