Dockerized nginx образ извлекает файл конфигурации совершенно другого приложения - PullRequest
2 голосов
/ 05 октября 2019

Я использую 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, затем закрываюсьесли выключено projects/app_one$ docker-compose down и начать работу с app_two: projects/app_two$ sudo docker-compose build && docker-compose up.

Когда я это делаю, контейнер nginx в app_two по-прежнему содержит файл nginx.conf app_one. Я узнал об этом, когда проверил каталог dockerized nginx /etc/nginx/, потому что мое приложение django отказалось загружать статические файлы моего app_two.

Вот часть nginx моего docker-compose моего 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 все еще есть «старый» nginx.conf из app_one.

1 Ответ

2 голосов
/ 05 октября 2019

Мне наконец удалось выяснить причину этой проблемы. Он находится в docker-compose.yml моего app_one:

nginx:
    image: nginx:latest
    build:   
        context: ./config
        dockerfile: Dockerfile-nginx

Оказывается, указание директив image и build означает, что Docker создает изображение, а затем помечает его как image.

В этом случае Dockerfile app_two основывал свой образ на том, который был создан app_one. Удаление директивы image файла app_one docker-compose решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...