Как получить доступ к файлу sqlite на хост-компьютере из контейнера Docker с помощью docker-compose?

#sqlite #docker #docker-compose

#sqlite #docker #docker-compose

Вопрос:

У меня есть

  • сервер Flask, работающий в Docker с использованием docker-compose.
  • файл sqlite хранится на хост-компьютере.

Я хочу получить доступ к файлу sqlite из образа docker с обновленным изменением файла sqlite.

Комментарии:

1. Не уверен, как выглядит ваш docker-compose.yml. Но вы можете достичь своей цели, смонтировав тома

2. поправьте меня, если я ошибаюсь, я думаю, что монтирование по объему дает вам «снимок» файла при создании образа, но не последнюю версию

3. Он будет непрерывно синхронизироваться с вашим локальным файлом DB

Ответ №1:

Если у вас есть файл на хост-компьютере, вы можете просто смонтировать этот файл внутри контейнера, используя -v опцию. Изменения, выполненные контейнером в файле, будут видны на хосте.

Быстрое подтверждение концепции:

 .
├── docker-compose.yml
└── the-file
  

Файл docker-compose.yml:

 version: '3'
services:
  the-flask:
    image: python
    volumes:
      - ${PWD}/the-file:/mnt/the-file
    command: tail -f /dev/null
  

Создайте, получите идентификатор контейнера, затем добавьте некоторый текст из контейнера в файл, смонтированный с хоста:

 docker-compose up -d 

docker exec <container-id> sh -c 'echo "Contend added from container" >> /mnt/the-file'
  

Файл на хосте:

 cat the-file 
Initial content
Contend added from container