通过docker中的nginx和gunicorn服务flask

2023-12-28

玩弄 Flask 我想在 docker 中进行真正的设置并运行。这意味着 Flask 应通过 nginx 和 Gunicorn 提供服务。我设置了一个示例代码存储库https://github.com/geoHeil/pythonServing https://github.com/geoHeil/pythonServing但到目前为止还无法让nginx正常工作。

烧瓶供应于application:5000,docker 应该将应用程序解析为其各自的名称。

Nginx配置如下:

server {

    listen 8080;
    server_name application;
    charset utf-8;

    location / {
        proxy_pass http://application:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

这对我来说看起来不错。到目前为止我还找不到问题所在。

edit

撰写文件在这里。启动命令是

docker-compose build
docker-compose up

version: '2'
services:
  application:
    restart: always
    build: ./application
    command: gunicorn -w 4 --bind :5000 wsgi:application
    links:
      - db
    expose:
     - "5000"
    ports:
      - "5000:5000"
  nginx:
    restart: always
    build: ./nginx
    links:
      - application
    expose:
      - 8080
    ports:
      - "8880:8080"

Your nginx配置文件位于错误的位置。

修复步骤:

sudo docker-compose down

删除 nginx 镜像:

sudo docker images
sudo docker rmi 
REPOSITORY                       TAG                 IMAGE ID            CREATED              SIZE
pythonserving_nginx              latest              152698f13c7a        About a minute ago   54.3 MB

sudo docker rmi pythonserving_nginx

现在更改nginxDockerfile:

FROM nginx:1.11.8-alpine
MAINTAINER geoheil

ADD sites-enabled.conf /etc/nginx/conf.d/sites-enabled.conf

请注意 nginx 配置的位置。

现在尝试这个 docker-compose 文件(使用用户定义的网络):

version: '2'
services:
  application:
    restart: always
    build: ./application
    command: gunicorn -w 4 --bind :5000 wsgi:application
    networks:
      - testnetwork
    expose:
     - "5000"
    ports:
      - "5000:5000"
  db:
    restart: always
    image: postgres:9.6.1-alpine
    networks:
      - testnetwork
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=d
      - POSTGRES_PASSWORD=d
      - POSTGRES_DB=d
    volumes:
      - ./postgres:/var/lib/postgresql
  nginx:
    restart: always
    build: ./nginx
    networks:
      - testnetwork
    expose:
      - 8080
    ports:
      - "8880:8080"
networks:
  testnetwork:

并调出容器:

sudo docker-compose up

浏览至http://本地主机:8880 http://localhost:8880

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过docker中的nginx和gunicorn服务flask 的相关文章

随机推荐