首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Docker的Rails应用程序的nginx维护页面

基于Docker的Rails应用程序的nginx维护页面
EN

Stack Overflow用户
提问于 2017-07-10 21:24:17
回答 2查看 1.9K关注 0票数 4

我想我有鸡和蛋的情况:

我的Rails应用程序是基于Docker的,我有nginx、Rails、Resque、Redis和MySQL的几张图片。

我目前的部署实现是(简单地):

代码语言:javascript
复制
docker-compose build
docker-compose down
... compile assets
... migrate
docker-compose up

这是很好的工作,但当然,如果我浏览应用程序在部署期间,我没有任何反应,这不是很好的用户体验。

我知道在nginx中设置一个“维护”页面,该页面是在站点处于维护模式时提供的,但是nginx映像是坞-组合规范的一部分,因此也会下降。

如果在任何映像(包括nginx)中有任何变化,那么将自动部署的所有映像--组合规范中的所有映像--都会使部署变得更容易。尤其是因为nginx、Rails、MySQL等都在同一个网络中。

如果nginx是docker-组合规范的一部分,那么当应用程序重新部署时,我如何继续提供维护页面呢?

(如果有区别的话,我将使用gitlab和主机上的gitlab-runner容器来执行repo的部署。)

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-10 21:46:28

这是一个:

坞工的NGINX维护页面示例

只需将nginx保存在同一个docker-come.yml中的单独容器中,并按以下方式部署:

代码语言:javascript
复制
docker-compose up -d --build --force-recreate your-app-service

添加一些逻辑将维护页面放入nginx中。nginx服务不会被compose所触及。

使用这样的方法来启用维护站点:

你的nginx配置

代码语言:javascript
复制
upstream backend {
    server app:80;

    server maintenance:80 backup; # <-- note the backup flag
}

server {
    location / {
        proxy_pass http://backend;
        proxy_connect_timeout 1s;
    }

}

然后在你的船坞里-Compose.yml:

代码语言:javascript
复制
version: "3"
services:
  app:
    (...)
  nginx:
    (...)
  maintenance:
    image: nginx
    volumes:
      - ./maintenance.html:/usr/share/nginx/html/index.hml
      - ./maintenance.conf:/etc/nginx/conf.d/default.conf

maintenance.conf

代码语言:javascript
复制
server {
    root /usr/share/nginx/html;
    server {
        listen 8080;

        location / {
            rewrite ^ /index.html break;
        }
    }
}

我在这里有一个完整的工作示例:https://github.com/xbx/docker-compose-nginx-maintenance-page-example

票数 2
EN

Stack Overflow用户

发布于 2017-07-11 17:59:26

备用工作流:使用码头群模式。让我们来完成以下工作流程:

代码语言:javascript
复制
docker swarm init
docker swarm deploy -c mycomposefile.yml
docker-compose build
docker service update ...

这样你就不用停止服务了,蜂群模式可以帮你更新。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45021826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档