У меня есть код всех моих сайтов под /srv
в моих контейнерах.
My Dockerfile загружает код с помощью git и делает его частью изображения для упрощения развертывания в процессе производства.
Но как мне изменить код в разработке? Я думал, что использование томов было решением, например: -v /docker/mycontainer/srv:/srv
. Но он перезаписывает каталог в контейнере. Если это первый раз, когда я запускаю его, он опустошает его, потому что в хосте нет ничего. Так что все, что я делал в Dockerfile, терялось.
Есть также каталоги и файлы внутри /srv/myapp
, которые я хочу использовать в разных версиях моего приложения, например: /srv/myapp/user-uploads
. Это обычная практика в профессиональной веб-разработке.
Итак, что я могу сделать, чтобы иметь возможность делать все это?
- изменить код в /srv в разработке
- share/srv/myapp/user-uploads в разных версиях
- пусть Dockerfile загружает код. Выполнение "git clone" или "git pull" за пределами Docker, по моему мнению, победит цель Docker. Кроме того, есть вещи, которые я не могу запустить на хосте, такие как миграции базы данных или другие скрипты, специфичные для приложения.
Есть ли способ сделать обратную громкость? Я имею в виду, что контейнер переписывает хост вместо противоположного.
Я думаю, что один soluiton мог бы скопировать /srv в/srv.deployment-copy перед запуском демонстратора контейнера. И затем, когда я запустил демон, проверьте, существует ли /srv.deployment-copy и копирует все обратно в /srv. Таким образом, я могу использовать /srv в качестве тома и все еще иметь возможность развернуть код с помощью Dockerfile. Я уже использую псевдонимы для всех команд докеров, поэтому автоматизировать это не будет проблемой. Как вы думаете?