Docker 连接拒绝挂起 Django

Jes*_*ral 2 django docker dockerfile docker-compose docker-container

当我运行我的容器时,它只是挂在下一行,如果我写

\n\n
\n

卷曲http://0.0.0.0:8000/

\n
\n\n

我明白了

\n\n
\n

无法连接到 0.0.0.0 端口 8000:连接拒绝

\n
\n\n

这是我的 dockerfile

\n\n
FROM python:3.6.1\n\n# Set the working directory to /app\nWORKDIR /app\n\n# Copy the current directory contents into the container at /app\nADD . /app\n\nRUN pip3 install -r requirements.txt\n\nCMD ["python3", "dockerizing/manage.py", "runserver", "0.0.0.0:8000"]\n
Run Code Online (Sandbox Code Playgroud)\n\n

我还尝试通过 docker-compose.yml 文件执行此操作,但再次没有任何反应,我\xc2\xb4ve 搜索了很多,并且 Haven\xc2\xb4t 找到了解决方案,这是 docker-compose.yml

\n\n
version: "3"\nservices:\n  web:\n    image: app1\n    deploy:\n      replicas: 5\n      resources:\n        limits:\n          cpus: "0.1"\n          memory: 50M\n      restart_policy:\n        condition: on-failure\n    ports:\n      - "8000:8000"\n    networks:\n      - webnet\nnetworks:\n  webnet:\n
Run Code Online (Sandbox Code Playgroud)\n\n

顺便说一句,如果我使用 myapp 映像运行 docker ps ,我会得到以下结果:

\n\n
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES\ne9633657f060        app1                "python3 dockerizi..."   5 seconds ago       Up 5 seconds                            friendly_dijkstra\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我使用 django-compose.yml 部署服务时,docker ps我得到以下信息:

\n\n
`MacBook-Pro-de-Jesus:docker-django Almaral$ docker ps\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES\n13677a71d9d5        app1:latest        "python3 dockerizin..."   15 seconds ago      Up 11 seconds                           getstartedlab_web.1.cq3zqmpfsii5g6m5r9qsnmtb1\nc6693118ef70        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 12 seconds                           getstartedlab_web.4.r472oh80s4zd1yymj447f1df6\nf3822e47970b        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 12 seconds                           getstartedlab_web.2.lkp43v9h30esjohcnf3pe31hi\nf66a4038ebdf        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 12 seconds                           getstartedlab_web.5.xxu01ruebd84tnlxmoymsu0vo\ne3d31c419c11        app1:latest        "python3 dockerizin..."   16 seconds ago      Up 13 seconds                           getstartedlab_web.3.uqswgirmg22sjnekzmf5b4xo7`\n
Run Code Online (Sandbox Code Playgroud)\n

Håk*_*Lid 5

您的docker ps输出在 PORTS 列中没有显示任何内容。这意味着没有从主机到容器的端口转发。

[...]     STATUS          PORTS                     NAMES
[...]     Up 5 seconds                              friendly_dijkstra
Run Code Online (Sandbox Code Playgroud)

如果您使用命令docker run来运行容器,则应使用命令选项在主机和容器上显式指定端口号-p hostPort:containerPort

docker run -p 8000:8000 app1
Run Code Online (Sandbox Code Playgroud)

现在,运行docker ps应该显示端口转发。

[...]     STATUS          PORTS                     NAMES
[...]     Up 5 seconds    0.0.0.0:8000->8000/tcp    friendly_dijkstra
Run Code Online (Sandbox Code Playgroud)

如果您使用docker-compose启动容器,则主机和容器端口已在 docker-compose.yml 文件中配置,因此您不需要命令行选项。

docker-compose up web
Run Code Online (Sandbox Code Playgroud)

要使用 docker compose,您必须将其安装在主机上。这是一个python模块,所以你可以用pip安装它pip install docker-compose