我正在使用Docker处理我目前正在处理的两个应用程序,每个应用程序都在不同的文件夹中,共享同一个父级:
projects/
app_one/
docker-compose.yml
config/
.Dockerfile-nginx
nginx.conf
app_two/
docker-compose.yml
nginx/
.Dockerfile-nginx
nginx.conf
我通常开始使用app_one:projects/app_one$ sudo docker-compose build && docker-compose up
则关闭CCD_ 2并开始在app_two:projects/app_two$ sudo docker-compose build && docker-compose up
上工作。
当我这样做的时候,app_two的nginx容器仍然有app_one的nginx.conf文件。当我检查dockerized nginx/etc/nginx/
目录时,我发现了这一点,因为我的django应用程序拒绝加载我的app_two的静态文件。
这是我的docker的nginx部分,由我的app_two:组成
nginx:
build:
context: ./nginx
Dockerfile: .Dockerfile-nginx
这是它的Dockerfile:
FROM nginx:latest
COPY ./nginx.conf /etc/nginx/conf.d
有人能告诉我是什么导致了这种行为吗?在我看来,这种行为违背了Docker的宗旨?
update
我重命名了app_one的nginx.conf,但这没有任何效果。app_two仍然拥有app_one的"旧"nginx.conf。
我终于找到了这个问题的原因。它在我的应用程序中
nginx:
image: nginx:latest
build:
context: ./config
dockerfile: Dockerfile-nginx
事实证明,同时指定image
和build
指令意味着Docker构建映像,然后用image
标记它。
在这种情况下,app_two的Dockerfile是基于app_one构建的镜像。删除app_one docker compose文件的image
指令修复了此问题。