azure - docker-compose:更改 azure 注册表中的图像时需要 2-3 分钟的停机时间
问题描述
我设置了以下应用程序:
version: '3'
services:
nginx:
image: myregistry.azurecr.io/nginx:latest
container_name: nginx
ports:
- 80:80
- 443:443
app2:
image: myregistry.azurecr.io/app2:latest
container_name: app2
expose:
- 8080
nginx.conf:
events {
}
http{
server {
listen 80 default_server;
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://app2:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
而且效果很好:反向代理在提供内容之前会询问用户名/密码。
现在,app2 不断变化,我设置了一个脚本,将新图像上传到 azure 注册表。
我的痛苦来了:每次我上传新版本时,我都会收到 502 - 来自 nginx 的网关错误大约 2-3 分钟。
在此时间之后,应用程序再次可用。怎么来的?有没有办法防止它?azure 向我承诺的 24/7 在哪里?:(
解决方案
当您更新容器设置的某些部分时,在这种情况下,容器会重新启动映像,这取决于您的应用程序需要多少时间才能重新启动。考虑使用docker swarm滚动更新来减少停机时间或优化您的应用程序。
NGINX 还缓存 DNS 查询,因此它可能仍会在很长一段时间内指向停止的容器,直到缓存更新。有关更多详细信息,请参阅此文档条目
推荐阅读
- r - 在 R 中使用函数 By 时,如何为每个组创建一个因子向量?
- python - youtube API python 文件出了点问题
- apache-spark - 与桶交换
- javascript - Ionic 为动态创建的 div 添加点击功能
- html - HTML - 切换桌面和移动视图不适用于浏览器调整大小
- python - Python - 简单问题:Numpy 矩阵、循环
- python-3.x - 尝试解析 C++ 文件时 Swig 抛出错误
- python-3.x - urllib3 和 requests 库发出的 HTTP 请求不同
- javascript - AngularJS更新元素仅在其属性之一发生更改时才有效
- docker - Asp.net 核心网站未在 docker 中运行