Как правильно перезаливать файлы, через образ или через контейнер?
Разбираюсь с докером, но не могу понять как все таки перезаливать файлы, подскажите плиз основную философию
Допустим программист сделал новый коммит на ГИТ, нужно подцепить исходники, сбилдить например через NPM run build
как правильно делать?
1) На основе исходников, создаю новый образ с этими файлами, (но обязательно перед этим удаляю старый контейнер или старый образ, т.к. docker build -f ./dockerfile -t front . не может перезаписать старый образ) дальше снова запукаю контейнер на основе этого образа.
2) делаю образ 1 раз и никогда его не трогаю, контейнер создаю тоже 1 раз но открываю что-то типа SFTP через который пробрасываю ZIP и уже распаковываю внутри контейнера
Основная загадка для меня как делать перебилд если у нас появились новые исходники допустим сайта, неужели придется всегда сперва останавливать контейнер полностью его удалять, удалять старый образ и только после этого выполнять docker build -f ./dockerfile -t front .
Как-то сложно и ненужно.
Стартуете нужный образ.
Делаете точки монтирования, где лежат исходные файлы и куда сбилдить результат.
Запускаете npm run build. В точку монтирования билдится результат.
Гасите контейнер.
То есть рассматриваете контейнер просто как изолированную среду выполнения кода, которая через точки монтирования взаимодействует с вашим проектом. В большинстве случаев что-либо заливать внутрь контейнера, хранить внутри контейнера код - не требуется.
Постоянно держать запущенный контейнер - тоже не требуется, если используете его для ребилда.
Обновился проект, - залили на сервер. Стартанули контейнер. Сбилдили исходники. Погасили контейнер.
Спасибо, я просто сейчас навожу порядок на сервере, у меня там все монолитом, хочу фронт и бек распихать по контейнерам, самая большая помойка у меня в NGINX.
т.е. я так понимаю мне надо 3 контенера:
1) FRON, это mount к точке монтирования с фронтом и конфиг NGINX + открыть 80 порт
2) BACK , то mount к точке монтирования с беком + node.js сервер
3) MYSQL, это тоже какие-то конфиги и тут тоже точка монтирования файловой системы будет ссылаться на хост, что бы не потерять данные.
ну и в будущем если я захочу снова перенести на новую VPS, я просто должен создать точки монтирования на сервере + подключить мои 3 образа докера и настроить GIT что бы плевался билдами в точки монтирования.
примерно так?)
(я просто забыл сказать что у меня сейчас билд на github происходит через их встроенные докеры в actions и я вот думаю понял что получается вообще нет смысла билдить на моем сервере, если докеры вообще никак не хранят мой код, а лишь маунтят (по вышенаписанной схеме))