我正在尝试连接到在docker中运行的django实例。据我所知,我已经打开了正确的端口,并在docker ps中看到端口8000上有tcp,但没有转发到该端口。
阅读了端口上的docker compose文档后,我希望它可以正常工作(我也可以在127.0.0.1:9000上查看pgadmin)。
我的docker撰写:
version: '3'
services:
postgresql:
restart: always
image: postgres:latest
environment:
POSTGRES_USER: pguser
POSTGRES_PASSWORD: pgpassword
POSTGRES_DB: pgdb
pgadmin:
restart: always
image: dpage/pgadmin4:latest
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: admin
GUNICORN_THREADS: 4
PGADMIN_LISTEN_PORT: 9000
volumes:
- ./utility/pgadmin4-servers.json:/pgadmin4/servers.json
depends_on:
- postgresql
ports:
- "9000:9000"
app:
build: .
environment:
POSTGRES_DB: pgdb
POSTGRES_USER: pguser
POSTGRES_PASSWORD: pgpassword
POSTGRES_HOST: postgresql
volumes:
- .:/code
ports:
- "127.0.0.1:8000:8000"
- "5555:5555"
depends_on:
- postgresql
- pgadmin
我尝试对{app} ports
使用以下组合,如建议here:
app:
...
ports:
- "8000"
- "8000:8000"
- "127.0.0.1:8000:8000"
但是在尝试访问该网站时我仍然看到This site can’t be reached 127.0.0.1 refused to connect.
。
我确定这是端口转发问题,并且我的服务器在django中正常转动,因为我可以对容器运行docker Attach,并使用预期的响应卷曲URL。
我在做什么错了?
答案 0 :(得分:0)
如果在虚拟机中运行docker,则需要通过虚拟机IP地址访问应用程序,并且不使用localhost或127.0.0.1 。尝试获取虚拟机IP。另外,请指定您在哪个平台/环境中安装和运行docker。
答案 1 :(得分:0)
要添加答案,我正在使用以下命令运行应用程序:
docker-compose run app python3 manage.py runserver 0.0.0.0:8000
使用docker-compose运行参数--service-ports
可以:
启用服务端口并映射到主机的运行命令。
因此,我的最终命令如下所示:
docker-compose run --service-ports app python3 manage.py runserver 0.0.0.0:8000
here上有run
上的文档