使用nginx的dockerised gunicorn拒绝连接,但一切似乎都已打开

时间:2019-08-19 15:01:54

标签: nginx docker-compose gunicorn

我正在尝试在本地运行dockerized django网站。我在所有URL上都收到了 502错误网关,Nginx在连接到上游时记录了“(111:连接被拒绝)。

Nginx位于一个容器中,Gunicorn / Django位于另一个容器中:

  app_en:
    build:
      context: ./
      dockerfile: app.dockerfile
    image: myproj:latest
    depends_on:
      - db_en
    volumes:
      - ./:/app
    command: ["sh", "/app/conf/__build__/gunicorn/gunicorn_start_en.sh"]
    working_dir: /app
    networks:
      main:
        aliases:
          - app_en

  nginx:
    image: nginx:latest
    depends_on:
      - app_en
    volumes:
      - ./:/app
      - ./conf/__build__/nginx_vhost:/etc/nginx/sites-enabled
    ports:
      - "80:80"
    networks:
      main:
        aliases:
          - nginx

Gunicorn通过以下方式在其容器的TCP套接字上运行:

gunicorn project.settings.settings_en:application \
    --name myproj_docker_en \
    --timeout 120 \
    --workers 2 \
    --user=www-data \
    --group=www-data \
    --bind=0.0.0.0:8000 \
    --log-level=debug

(端口8000通过gunicorn容器的Dockerfile公开)。

我可以通过其日志看到gunicorn成功启动:

Starting myproj_docker_en as 'root'
[INFO] Starting gunicorn 19.9.0
[INFO] Listening at: http://127.0.0.1:8000 (1)
[INFO] Using worker: sync
[INFO] Booting worker with pid: 12
[INFO] Booting worker with pid: 13

netstat -ltup在gunicorn容器上显示了gunicorn / python正在监听8000:

tcp        0      0 localhost:8000          *:*                     LISTEN      1/python

但是nginx容器无法远程登录到它:

telnet app_en 8000
Trying 172.21.0.6...
telnet: Unable to connect to remote host: Connection refused

我可以docker inspect放置gunicorn容器,看看它是正确的IP,并且打开了8000(但未映射到主机端口):

"Ports": {
    "8000/tcp": null
}

...我有点茫然。显然,这很明显,我要踢自己,但是是什么阻止Nginx到达8000端口的Gunicorn容器呢?

0 个答案:

没有答案