我花了两天时间想弄明白这个问题。我正在运行docker容器,从docker撰写文件中托管django+react网站。
我可以访问端口80的网站(IP: http://52.90.163.11:80),但我似乎无法访问端口8000的django管理面板(IP应该是http://52.90.163.11:8000,但它不起作用)。我使用AWS来托管我的网站。
我只是想通过端口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镜像命令创建状态端口名称
9852c9738331 anariumhaj/mynacode:nginx "/dockerentrypoint ...."9 minutes ago Up 9 minutes 80/tcp, 0.0.0.0:80->8080/tcp,:::80->8080/tcp mynacode_nginx_1
b9709cbe37a1 ansariumhaj/mynacode: myncode -backend "gunicorn djreact.ws…"9 minutes ago Up 9 minutes 0.0.0.0:8000->8000/tcp,:::8000->8000/tcp mynacode_backend_1
5ebbbcae314 ansariumhaj/mynacode:postgres "docker-entrypoint.s…"9 minutes ago Up 9 minutes 5432/tcp mynacode_pgdb_1
我已经尝试创建一个新的AWS实例,docker系统修剪和重新创建镜像/卷,但问题仍然存在。
所以我找到了解决方案!docker文件正确。我必须登录到Amazon实例并启用端口8000,这样它才能接受该端口上的请求!