У меня проблемы с поэтапным перезапуском на производственном сервере puma.Конфигурация рабочего сервера следующая:
Приложение Rails, работающее в док-контейнере.три других образа докера: - redis - solr - nginx (в качестве прокси) Я использую docker-compose для запуска этих контейнеров.+ внешний сервер Mysql для БД.
Когда мне нужно развернуть новый код, вот рабочий процесс:
- Нажмите новый код на сервер
- перенастроить дБ, еслинеобходимо (запустить rake db: migrate в веб-контейнере)
- предварительно скомпилировать ресурсы (запустить rake assets: precompile в веб-контейнере)
- перезапустить веб-сервер.
Вот и вся хитрость: я бы хотел перезапуска без простоев.Поэтому я попытался использовать поэтапный перезапуск puma вместо перезапуска веб-сервера.Но когда я это делаю, новый код rails развертывается, а новые ресурсы - нет (несмотря на то, что rake assets: precompile).
Кто-нибудь знает, как я могу решить эту проблему?
PS:Я знаю, что должен использовать Capistrano, snce, это то, что всплывает все время, когда я гуглю свою проблему.Но, честно говоря, я не знаю, с чего начать, и это немного страшно и обескураживает.Тем более, что я также использую эту настройку docker-compose, которая довольно сложна.
Вот содержимое docker-compose.yml
version: "2"
services:
web:
build: .
command: bash -c "rails server -e production -p 3000 -b '0.0.0.0'"
volumes:
- .:/app
ports:
- "3000:3000"
- "9292:9292"
links:
- solr:solr
- redis
depends_on:
- solr
env_file:
- .env
entrypoint:
- /app/docker-entrypoint.sh
network_mode: bridge
restart: always
solr:
image: solr
ports:
- "8983:8983"
volumes:
- data:/opt/solr/server/solr/mycores
entrypoint:
- docker-entrypoint.sh
- solr-precreate
- qwerteach
network_mode: bridge
restart: always
redis:
image: redis:latest
ports:
- "6379"
network_mode: bridge
restart: always
proxy:
image: nginx:alpine
expose :
- "80"
volumes:
- ./proxy/qwprodpuma.conf:/etc/nginx/conf.d/qwprod.conf #- ./proxy/qwprod.conf:/etc/nginx/conf.d/qwprod.conf
links:
- web
environment:
- VIRTUAL_HOST=qwerteach.com, www.qwerteach.com
- LETSENCRYPT_HOST=qwerteach.com, www.qwerteach.com
- LETSENCRYPT_EMAIL=simon@hoggart.eu
- VIRTUAL_PORT=80
network_mode: bridge
restart: always
volumes:
data: