如何使用GCP和NGINX修复502坏网关错误

如何使用GCP和NGINX修复502坏网关错误,nginx,google-cloud-platform,google-compute-engine,airflow,Nginx,Google Cloud Platform,Google Compute Engine,Airflow,我正试图学习在GCP vm实例()上创建Apache气流管道的教程,但在构建并运行docker容器后,当我尝试使用以下方法访问Web服务器时,Nginx 1.14出现了“502坏网关”错误: http://<VM external ip>/ 但这并没有改变任何事情 GCP实例是一个带有Ubuntu 18.04的N1-standard-8,并且启用了云、HTTPS和HTTP访问 启用的Nginx站点包括: server { listen 80; location /

我正试图学习在GCP vm实例()上创建Apache气流管道的教程,但在构建并运行docker容器后,当我尝试使用以下方法访问Web服务器时,Nginx 1.14出现了“502坏网关”错误:

http://<VM external ip>/
但这并没有改变任何事情

GCP实例是一个带有Ubuntu 18.04的N1-standard-8,并且启用了云、HTTPS和HTTP访问

启用的Nginx站点包括:

server {
    listen 80;

    location / {
            proxy_pass http://0.0.0.0:8080/;
    }
}

根本原因
您遇到的问题与keepalives无关,它更简单-docker容器退出并且没有运行,因此当nginx尝试将您的请求代理到容器中时,它失败,从而导致错误。上述故障是由于气流与当前版本的sqlalchemy不兼容造成的

验证
运行此命令以查看失败容器的日志

sudo docker logs `sudo docker ps -a -f "ancestor=greenr-airflow" --format '{{.ID}}'`
您将看到容器中的python无法导入包,出现以下错误:

No module named 'sqlalchemy.ext.declarative.clsregistry'
解决方案

虽然我严格遵守了教程,但我还是建议不要这样做 使用sudo运行命令您可能希望与教程a有所不同 为了不让你失望,我才咬了你一口

跑步前

sudo docker build -t greenr-airflow:latest .
命令,编辑Dockerfile文件并添加以下两行

&& pip install SQLAlchemy==1.3.23 \
&& pip install Flask-SQLAlchemy==2.4.4 \
在正在安装的软件包列表的某个位置,我在之后添加了它

&& pip install -U pip setuptools wheel \
这是写作时的第54行

如果要重新使用同一实例,请在更改文件后删除并重新生成图像:

sudo docker rmi greenr-airflow
sudo docker build -t greenr-airflow:latest .
sudo docker rmi greenr-airflow
sudo docker build -t greenr-airflow:latest .