Puma分阶段重启服务旧资产

时间:2018-11-27 14:23:58

标签: ruby-on-rails docker puma

我在彪马生产服务器上分阶段重新启动时遇到麻烦。 生产服务器的配置如下:

运行在Docker容器中的应用程序。 其他三个docker映像:  -Redis  -solr  -nginx(作为代理) 我正在使用docker-compose运行这些容器。 +数据库的外部Mysql服务器。

当我需要部署新代码时,以下是工作流程:

  1. 将新代码推送到服务器
  2. 必要时迁移数据库(在Web容器中运行rake db:migrate)
  3. 预编译资产(运行rake资产:在Web容器中预编译)
  4. 重新启动Web服务器。

诀窍出在这里:我希望零停机时间重新启动。所以我尝试使用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:

0 个答案:

没有答案