Тома docker-compose, не монтируемые в каталоги хоста
Я использую docker-compose для развертывания, с 2 docker-compose.yml
установка, где я собираю образ локально и извлекаю из докера на сервере.
Локально:
app:
build: .
volumes:
- "./tmp/volume:/volume"
И на сервере:
app:
image: username/repo:tag
volumes:
- "/data/volume:/volume"
Локально мой том монтируется в указанный каталог нормально, файлы, созданные приложением, сохраняются там вне контейнера. Однако на сервере развертывания этого не происходит.
Однако файлы создаются и сохраняются в процессе развертывания, даже если мой сценарий развертывания выполняется docker-compose down -v
который предположительно удаляет именованные и анонимные тома в контейнере.
Я уверен, что делаю что-то не так, но я не вижу, что.
1 ответ
Сервер в этом случае был узлом EC2 в AWS, и это оказалось проблемой при подключении тома EBS после запуска демона docker.
По сути, docker ожидал файловую систему до того, как том был смонтирован /data
и файлы были фактически записаны в затененную /data
каталог, но невидимый из-за монтирования. Это застало меня врасплох в основном потому, что монтирование произошло задолго до развертывания, когда изначально создавались контейнеры.
Поэтому, если вы монтируете тома EBS на узле EC2, перезапустите сервис докера, если вы ожидаете, что контейнеры смогут получить доступ к этим томам.