在本地测试时,docker 容器运行良好,但在云运行上部署后,我得到了502 bad gateway
。它大约需要 50-60 分钟,然后无缘无故地开始工作....导致网站停机。已经研究了大约一周,但仍然无法弄清楚为什么会发生这种情况。
历史:
我之前部署过 Vuejs 静态构建,使用相同的后端,一切都运行良好...我最近将我的前端重写了 Nuxtjs,那时部署问题就开始了。
如何测试dockerfile
构建:
按照谷歌的建议我使用:PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} myImage:latest
点击此处
Dock文件:
# Alpine Deployment Server
FROM nginx:stable-alpine as alpine-server
# install necessary packages
....
# Start server
CMD pm2 start > pm2.log && \
gunicorn -b 0.0.0.0:5000 --workers 1 --threads 8 --timeout 0 api:app --daemon && \
gunicorn -b 0.0.0.0:5001 --workers 1 --threads 1 --timeout 0 extras:app --daemon && \
nohup sh -c "scrapyrt -p 7000 -i 0.0.0.0" > /dev/null 2>&1 & \
nginx -g 'daemon off;'
注意:Nuxt 还配置为在上午启动,0.0.0.0:3000
用于pm2
启动 Nuxt
NGINX 配置
server {
listen 8080;
server_name _;
charset utf-8;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
....
}
location ~^/api/v1/(.+)/search/(.+)$ {
set $allowspace2 $2;
proxy_pass http://127.0.0.1:5000/api/v1/$1/search/$allowspace2;
proxy_http_version 1.1;
proxy_redirect ~^/api/v1/(.+)/search/(.+)$ http://127.0.0.1:5000/api/v1/$1/search/$allowspace2;
....
}
location ~^/api/v1/(.+)/view/(.+)$ {
set $allowspace2 $2;
proxy_pass http://127.0.0.1:5000/api/v1/$1/view/$allowspace2;
proxy_http_version 1.1;
proxy_redirect ~^/api/v1/(.+)/view/(.+)$ http://127.0.0.1:5000/api/v1/$1/view/$allowspace2;
...
}
location ~^/extras/v1/(.+)/(.+)$ {
set $allowspace2 $2;
proxy_pass http://127.0.0.1:5001/extras/v1/$1/$allowspace2;
proxy_http_version 1.1;
proxy_redirect ~^/extras/v1/(.+)/(.+)$ http://127.0.0.1:5001/extras/v1/$1/$allowspace2;
....
}
....
gzip on;
gzip_types text/plain application/xml text/css application/javascript;
gzip_comp_level 6;
gzip_min_length 1000;
gzip_proxied any;
gzip_vary on;
}
在尝试导航到 url 时,云运行会记录什么错误502 bad Gateway
?
*13 connect() failed (111: Connection refused) while connecting to upstream,....
令我沮丧的是为什么?
为什么上游处于离线状态,首先启动所有服务,然后启动 NGINX。
为什么要花很长时间才最终开始。
为什么它只能在部署到云运行时在本地运行,这只是一个骗局。
我该如何解决这个问题?
答案1
更新
这个问题与 GCP 无关,在我遇到这个问题后终于解决了回答 just luck