Почему Docker-compose volume не монтирует данные из контейнера на локальную машину?
Здравствуйте! Пожалуйста, подскажите, почему так происходит.
У меня есть три официальных сборки - nginx, fpm, postgres. Когда я собираю из них контейнеры, вольюм на постгресе полностью с нуля создает локально папку с бд из контейнера, которой у меня раньше не существовало, а остальные вольюмы просто пустые папки без данных.
Я хочу иметь максимальный контроль над ngix и php, поэтому слушаю /etc/nginx и /usr/local/etc соответственно. Но в отличие от постгреса эти папки из контейнеров создаются без данных и соответственно удаляют данные nginx и php в контейнерах.
Nird, я так делаю сейчас как "костыльное решение") Но хотелось бы без вот этого всего, чтобы мне как в постгресе все данные монтировались сами без лишних телодвижений в контейнер.
Суть проблемы та в том, что вы пробрасываете пустые директории в дефолтные директории с конфигами в контейнер. Соответственно при старте контейнера, нет конфигов nginx и он не запускается и сразу падает. Если предварительно скопировать на хост директории с конфигами nginx, а затем пробросить их в контейнер, то контейнер стартанет, но у вас будет прямой доступ к конфигам, навсегда. И дальше вам просто нужно всегда пробрасывать директорию с конфигами. Так же как и в постгрес.
Nird, ну костыль в том, что, например, я хочу чтобы по моему докер-композ файлу поднял проект человек, который не разбирается в этом. И тогда он не поймёт почему у него постоянно отваливается два контейнера. Это нужно писать большой вводный пост "АЛЯРМЕ", чтобы он перекопировал конфиг-папки из контейнера. Сложно и не нужно. Почему бы на этапе билда не делать это автоматически. На то мы и разработчики) чтобы меньше делать руками, больше полагаться на автоматику
Holmess88, ну так и напишите скрипт для автоматического развертывания контейнеров как вам нужно. В любом случае без базовых знаний docker и linux развернуть сборку не получится.
Честно сказать, не понимаю что происходит в контейнерах на деле. У меня успешно копируется бд перед монтированием. Или логи nginx. Но не nginx или php директории с конфигами.
volumes:
# - ./data:/var/lib/mysql # bind mount for MySQL data
- data:/var/lib/mysql # volume for MySQL data
- conf:/etc/mysql # volume for MySQL configuration files
# - ./my.cnf:/etc/mysql/my.cnf # Using a custom MySQL configuration file