Не удается подключить рабочий каталог контейнера докеров к хосту

Я пытаюсь создать контейнер Docker для своего приложения Python, который позволяет редактировать файл конфигурации в рабочем каталоге приложения, поэтому мне не нужно перестраивать образ каждый раз, когда вносятся изменения.

Докерфайл:

FROM python:3

VOLUME /app
COPY . /app
WORKDIR /app

RUN pip install requirements.txt

CMD ["python", "main.py"]

После создания образа я развертываю контейнер с помощью

docker run -d --name app -v /path/on/host/app:/app app:latest

Я получаю сообщение об ошибке в контейнере, python: can't open file 'main.py': [Errno 2] No such file or directory и /path/on/host/app остаются пустыми.

Я не могу понять, что мне нужно в моем Dockerfile, чтобы это работало.

Обновить - нашел решение

Поскольку мне нужен только доступ к файлу конфигурации, вот изменения, которые я внес, чтобы заставить это работать.

Докерфайл:

FROM python:3
COPY . /app
WORKDIR /app
RUN pip install requirements.txt
VOlUME /app/config
CMD ["python","main.py"]

Теперь, когда я запускаю контейнер, я копирую конфиг в /path/on/host/app

docker run -d --name app --mount type=bind,source=/path/on/host/app,target=/app/config

Это решило мою проблему, и теперь я могу обновить конфигурацию и перезапустить контейнер, чтобы применить изменения.


person Tony    schedule 28.09.2020    source источник
comment
Если вы монтируете папку с хоста, папка перекрывает папку в контейнере. Если папка хоста пуста, она пуста и в контейнере.   -  person Klaus D.    schedule 28.09.2020
comment
@Клаус Д. Есть ли что-то другое, что я могу использовать, чтобы отражать каталог хоста и каталог контейнера?   -  person Tony    schedule 28.09.2020
comment
Где находится ваш файл main.py?   -  person DrSpill    schedule 28.09.2020