Разработка и контроль версий в общем контейнере данных
Я работаю над проектом OpenERP, где я работаю над несколькими пользовательскими модулями. У меня есть 3 контейнера настройки:
- приложение: здесь работает служба OpenERP
- db: сервис PostgreSQL, больше ничего
- data: только директория томов и служит поставщиком данных для контейнера 'app'
Он работает нормально, но если я хочу работать с файлами в контейнере данных, я не знаю, какой самый быстрый и лучший способ использовать правильную IDE, и, если я закончу, передайте код и фактически сохраните его после закрытия контейнер вниз?
Один из подходов состоит в том, чтобы создать еще один контейнер с общей службой X11 и подключиться к нему с помощью IDE на основе графического интерфейса или чего-то подобного, но для меня это немного излишне.
Что касается контроля версий: у меня есть удаленное репозиторий git, который может быть полезен для хранения изменений, но как только я создаю образ из Dockerfile и раскручиваю его, он не может клонировать репо, поскольку он допускает только SSH-соединение и контейнер не имеет его
Я нашел несколько статей и постов в блоге об общих контейнерах данных и о том, как они хороши. Я не смог найти другого, где они обсуждали фактическую разработку и фиксацию кода на этих конкатайнерах данных.
Мысли?
1 ответ
Вам не нужен контейнер с общим сервисом X11 или с помощью git для клонирования вашего репозитория кода из контейнера.
Для разработки вы можете смонтировать папку с кодом, используя тома в вашем контейнере "data", и тогда ваш контейнер "app" увидит эти файлы (см. https://docs.docker.com/userguide/dockervolumes/):
sudo docker run -d -P --name data -v /src/webapp:/opt/webapp my/container
Поскольку эта папка будет находиться на главном компьютере, она будет сохранена после закрытия контейнера "данных". Вы также сможете использовать свою любимую среду IDE для редактирования кода.
Для производства вы можете ДОБАВИТЬ папку с кодом в само изображение контейнера, чтобы вы могли развернуть контейнер напрямую. В вашем Dockerfile:
ADD /home/user/webapp /opt/webapp
Кроме того, см. Код для вставки в Docker-контейнер или смонтируйте его как том? для краткого обсуждения этого подхода.