Я пытаюсь создать контейнер 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
Это решило мою проблему, и теперь я могу обновить конфигурацию и перезапустить контейнер, чтобы применить изменения.