Как пробросить файл из контейнера на хост?
Я пытаюсь пробросить файл базы данных sqlite из контейнера на хост по пути /var/bot/data.db, но он почему-то не пробрасывается. Что я делаю не так?
Вот структура моего проекта:
project
|
| bot
| data.db
| bot.py
| requirements.txt
| Dockerfile
| docker-compose.yml
Dockerfile:
FROM python:3
WORKDIR /bot
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY /bot .
CMD ["python", "bot.py"]
Docker-compose:
version: '3'
services:
selenium_chrome:
image: selenium/standalone-chrome
container_name: selenium_chrome
ports:
- 4444:4444
restart: always
bot:
build: .
container_name: bot
links:
- selenium_chrome
restart: always
volumes:
- ./bot/data.db:/var/bot/data.db
Ответы (1 шт):
Скорее всего у вас неправильно подключается volume и приложение работает с не тем файлом, который вы ожидаете.
Вот эта строка:
- ./bot/data.db:/var/bot/data.db
подключит файл bot/data.db из каталога проекта на хосте в файловую систему контейнера по пути /var/bot/data.db. Обратите внимание, что файл будет в директории /var/bot внутри контейнера.
Если приложение не обращается к базе по пути /var/bot/data.db, то оно не будет модифицировать файл из /var/bot (в контейнере) и соответсвенно файл в директории bot проекта.
Правильно будет указать отображение для volume в формате <путь на хосте>:<путь в контейнере>.
Путь на хосте может быть относительным от директории с docker-compose.yml` или абсолютным.