不能连接到这后端服务器运行端口8000使用nginx,django和docker

llmtgqce  于 2023-01-27  发布在  Go
关注(0)|答案(1)|浏览(154)

我花了两天的时间试图弄明白这个问题,我正在运行一个docker容器,它通过一个docker compose文件托管一个django + react网站。
我可以通过端口80(IP:http://52.90.163.11:80),但我似乎无法访问端口8000上的django管理面板(IP应该是http://52.90.163.11:8000,但它不工作)。
我只想通过端口8000访问后端容器。
我有两个Docker合成文件。一个我在本地机器上构建。在本地机器上构建后,我将图像推送到dockerhub。第二个dockerfile驻留在AWS服务器上,并使用第一个构建中的图像。
这是我在本地机器上创建图像的docker-compose文件。

version: '3'

services:
  backend:
    build:
      context: ./backend/src
    command: gunicorn djreact.wsgi --bind 0.0.0.0:8000
    ports:
      - 8000:8000
    depends_on:
      - pgdb
  pgdb:
    image: postgres
    environment:
      POSTGRES_HOST_AUTH_METHOD: trust
    volumes:
      - pgdata:/var/lib/postgresql/data
  frontend:
    build:
      context: ./frontend/gui 
    volumes:
      - react_build:/frontend/build
  nginx:
    image: nginx:latest
    ports:
      - 80:8080
    volumes:
      - ./nginx/nginx_setup.conf:/etc/nginx/conf.d/default.conf:ro
      - react_build:/var/www/react
    depends_on:
      - backend
      - frontend

volumes:
  react_build:
  pgdata:

这是我在AWS服务器上的dockerfile,它使用了在我本地机器上创建的图像。

version: '3'

services:
  backend:
    image: ansariuminhaj/mynacode:mynacode-backend
    command: gunicorn djreact.wsgi --bind 0.0.0.0:8000
    ports:
      - 8000:8000
    depends_on:
      - pgdb
  pgdb:
    image: ansariuminhaj/mynacode:postgres 
    environment:
      POSTGRES_HOST_AUTH_METHOD: trust
    volumes:
      - pgdata:/var/lib/postgresql/data
  frontend:
    image: ansariuminhaj/mynacode:mynacode-frontend 
    volumes:
      - react_build:/frontend/build
  nginx:
    image: ansariuminhaj/mynacode:nginx
    ports:
      - 80:8080
    volumes:
      - ./nginx/nginx_setup.conf:/etc/nginx/conf.d/default.conf:ro
      - react_build:/var/www/react
    depends_on:
      - backend
      - frontend

volumes:
  react_build:
  pgdata:

下面是我的nginx配置文件:

upstream api {
      server backend:8000;
}

server {
    listen 8080;

    server_name 52.90.163.11;

    location / {
            proxy_read_timeout 300s;
            proxy_connect_timeout 75s;
        root /var/www/react;
        try_files $uri /index.html;
    }

    location /api/ {
            proxy_read_timeout 300s;
            proxy_connect_timeout 75s;
        proxy_pass http://api;
        proxy_set_header Host $http_host;
    }

}

docker ps在我的AWS服务器上显示了这个。
容器ID图像命令创建状态端口名称
10分钟前已上传9分钟80/tcp,0. 0. 0. 0:80-〉8080/tcp,浏览器:::80-〉8080/tcp密码:::80-〉8080/tcp密码:::80-〉8080/tcp密码
10分钟前上传到9分钟前0. 0. 0. 0:8000-〉8000/tcp,浏览器:::8000-〉8000/tcp密码:::8000/tcp密码后台_1
5eebbbcae314安萨里乌明哈吉/mynacode:postgres " Docker -入口点. s ..." 9分钟前上了9分钟5432/tcp mynacode_pgdb_1
我尝试创建一个新的AWS示例,Docker系统修剪并重新创建映像/卷,但问题仍然存在。

g6ll5ycj

g6ll5ycj1#

所以我找到了解决方案!Docker文件是正确的。我必须登录亚马逊示例并启用端口8000,以便它接受该端口上的请求!

相关问题