如何修复Docker镜像更新导致的504错误 [英] How to fix 504 error caused by Docker image update

查看:31
本文介绍了如何修复Docker镜像更新导致的504错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有Django项目。它可以与nginx、uwsgi和谷歌Cloud Run协同工作。 这个项目使用的是docker,其中的python:3.9图片。我自8月17日以来一直收到此错误

2021-10-13 17:22:29.654 JSTGET504717 B899.9 sGoogleStackdriverMonitoring-UptimeChecks(https://cloud.google.com/monitoring) https://xxxx/

The request has been terminated because it has reached the maximum request timeout. To change this limit, see https://cloud.google.com/run/docs/configuring/request-timeout

而且这个错误也出现在我的所有页面上。然而,当我自己打开我的页面时,我可以看到我的页面。这意味着我看不到504错误,我只能从服务器日志中检查它是否发生。

我在8月17日在admin.py中添加了一行。我认为此行与此错误无关。因为此更改仅在管理页面中生效。我已经回滚了错误发生前的代码。现在我仍然无法修复此错误。

错误前和错误后,构建的扩展坞图像大小不同。脆弱性也有所下降。我认为这是由于巨蟒图像上的一些小变化造成的。在这种情况下,我如何解决此问题?

我做了什么

我将docker镜像更改为python:3.8和python:3.9.6-buster。我无法修复该错误。

推荐答案

我解决了这个问题。我已将套接字更改为端口连接。

这是我的设置。

uwsgi.ini

[uwsgi]
# this config will be loaded if nothing specific is specified
# load base config from below
ini = :base

# %d is the dir this configuration file is in
http = 127.0.0.1:8000
master = true
processes = 4
max-requests = 1000                  ; Restart workers after this many requests
max-worker-lifetime = 3600           ; Restart workers after this many seconds
reload-on-rss = 512                  ; Restart workers after this much resident memory
threaded-logger = true

[dev]
ini = :base
# socket (uwsgi) is not the same as http, nor http-socket
socket = :8001


[local]
ini = :base
http = :8000
# set the virtual env to use
home = /Users/you/envs/env


[base]
# chdir to the folder of this config file, plus app/website
chdir = %dapp/
# load the module from wsgi.py, it is a python path from 
# the directory above.
module = website.wsgi:application
# allow anyone to connect to the socket. This is very permissive
chmod-socket = 666

nginx-app.conf

# the upstream component nginx needs to connect to
upstream django {
    # server unix:/code/app.sock; # for a file socket
    server 127.0.0.1:8000; # for a web port socket (we'll use this first)
}

# configuration of the server
server {
    # the port your site will be served on, default_server indicates that this server block
    # is the block to use if no blocks match the server_name
    listen      8080;

    # the domain name it will serve for
    server_name MY_DOMAIN.COM; # substitute your machine's IP address or FQDN
    charset     utf-8;


    # max upload size
    client_max_body_size 10M;   # adjust to taste
    # set timeout
    uwsgi_read_timeout 900;
    proxy_read_timeout 900;
    # Django media
    location /media  {
        alias /code/app/media;  # your Django project's media files - amend as required
    }

    location /static {
        alias /code/app/static; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        proxy_pass  http://127.0.0.1:8000;
        proxy_set_header Host $http_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;
        proxy_http_version 1.1;
        include     /code/uwsgi_params; # the uwsgi_params file you installed
    }
}

这篇关于如何修复Docker镜像更新导致的504错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆