Docker和Nginx上的uwsgi作为反向代理

时间:2018-09-28 18:58:11

标签: python docker nginx flask uwsgi

我有一个安装了Nginx的Amazon EC2实例(使用Amazon Linux)。我设置了python Flask应用程序,并将其放在Docker容器上。 Docker文件在这里:

FROM apierleoni/flask-uwsgi:latest
EXPOSE 3001
WORKDIR /usr/src/app
RUN pip install --upgrade pip
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 3001

CMD [ "uwsgi", "--socket", "0.0.0.0:3001", \
               "--protocol", "http", \
               "--wsgi", "wsgi:app" ]

docker-compose.yml看起来像这样:

version: '3'
services:
  integration-app:
    container_name: integration-app-api
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - '.:/usr/src/app'
    ports:
      - '3001:3001'

运行docker-compose up命令后,我可以通过HTTP在端口3001上访问Flask应用程序路由

Nginx反向代理不起作用。产生502错误。 Nginx配置看起来像这样

upstream api_server2 {
 server 127.0.0.1:3001;
}



server {
    ...

    location /crm-project-api {
      include uwsgi_params;
      uwsgi_pass api_server2;
    }

    ...
}

1 个答案:

答案 0 :(得分:0)

upstream api_server2 {
 server 127.0.0.1:3001;
}
instead of this add:-
upstream api_server2{
 server integration-app:3001;  // container name
}

CMD [ "uwsgi", "--socket", "0.0.0.0:3001", \
               "--protocol", "http", \
               "--wsgi", "wsgi:app" ]

代替http协议添加uwsgi