Dockerized nginx镜像获取了一个完全不同的应用程序的配置文件



我正在使用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

事实证明,同时指定imagebuild指令意味着Docker构建映像,然后用image标记它。

在这种情况下,app_two的Dockerfile是基于app_one构建的镜像。删除app_one docker compose文件的image指令修复了此问题。

最新更新