我在彪马生产服务器上分阶段重新启动时遇到麻烦。 生产服务器的配置如下:
运行在Docker容器中的应用程序。 其他三个docker映像: -Redis -solr -nginx(作为代理) 我正在使用docker-compose运行这些容器。 +数据库的外部Mysql服务器。
当我需要部署新代码时,以下是工作流程:
诀窍出在这里:我希望零停机时间重新启动。所以我尝试使用puma phased-restart代替Web服务器重启。 但是,当我这样做时,会部署新的rails代码,但不会部署新资产(尽管rake asset:precompile)。
有人知道我该怎么解决吗?
PS:我知道我应该使用Capistrano,因为这是我在搜索问题时一直弹出的原因。但是说实话,我不知道从哪里开始,这有点令人恐惧和沮丧。尤其是因为我也在使用此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: