Docker 连接拒绝挂起 Django
Docker connection refused hanging Django
当我 运行 我的容器时,它只是挂在下一行,如果我写
curl http://0.0.0.0:8000/
我明白了
Failed to connect to 0.0.0.0 port 8000: Connection refuse
这是我的docker文件
FROM python:3.6.1
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
RUN pip3 install -r requirements.txt
CMD ["python3", "dockerizing/manage.py", "runserver", "0.0.0.0:8000"]
我也尝试通过 docker-compose.yml 文件来完成,但还是没有任何反应,我搜索了很多但没有找到解决方案,这就是 docker-compose.yml
version: "3"
services:
web:
image: app1
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "8000:8000"
networks:
- webnet
networks:
webnet:
顺便说一下,如果我 运行 docker ps 使用我的应用程序图片,我会得到这个:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9633657f060 app1 "python3 dockerizi..." 5 seconds ago Up 5 seconds friendly_dijkstra
当我使用 django-compose.yml 和 docker ps
部署服务时,我得到:
`MacBook-Pro-de-Jesus:docker-django Almaral$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13677a71d9d5 app1:latest "python3 dockerizin..." 15 seconds ago Up 11 seconds getstartedlab_web.1.cq3zqmpfsii5g6m5r9qsnmtb1
c6693118ef70 app1:latest "python3 dockerizin..." 16 seconds ago Up 12 seconds getstartedlab_web.4.r472oh80s4zd1yymj447f1df6
f3822e47970b app1:latest "python3 dockerizin..." 16 seconds ago Up 12 seconds getstartedlab_web.2.lkp43v9h30esjohcnf3pe31hi
f66a4038ebdf app1:latest "python3 dockerizin..." 16 seconds ago Up 12 seconds getstartedlab_web.5.xxu01ruebd84tnlxmoymsu0vo
e3d31c419c11 app1:latest "python3 dockerizin..." 16 seconds ago Up 13 seconds getstartedlab_web.3.uqswgirmg22sjnekzmf5b4xo7`
进入您的 docker-compose 配置文件,将您的端口重定向从:8000:8000
修改为 127.0.0.1:8000:8000
您的 docker ps
输出在 PORTS 列中没有显示任何内容。这意味着没有从主机到容器的端口转发。
[...] STATUS PORTS NAMES
[...] Up 5 seconds friendly_dijkstra
如果您使用命令 docker run
到 运行 您的容器,您应该使用命令选项 -p hostPort:containerPort
[=20= 在主机和容器上明确指定端口号]
docker run -p 8000:8000 app1
现在,运行ning docker ps
应该显示端口转发。
[...] STATUS PORTS NAMES
[...] Up 5 seconds 0.0.0.0:8000->8000/tcp friendly_dijkstra
如果您使用 docker-compose
启动您的容器,主机和容器端口已经在您的 docker-compose.yml 文件中配置,因此您不需要命令行选项。
docker-compose up web
要使用 docker compose,您必须在主机上安装它。
这是一个 python 模块,因此您可以使用 pip pip install docker-compose
安装它
当我 运行 我的容器时,它只是挂在下一行,如果我写
curl http://0.0.0.0:8000/
我明白了
Failed to connect to 0.0.0.0 port 8000: Connection refuse
这是我的docker文件
FROM python:3.6.1
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
RUN pip3 install -r requirements.txt
CMD ["python3", "dockerizing/manage.py", "runserver", "0.0.0.0:8000"]
我也尝试通过 docker-compose.yml 文件来完成,但还是没有任何反应,我搜索了很多但没有找到解决方案,这就是 docker-compose.yml
version: "3"
services:
web:
image: app1
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
ports:
- "8000:8000"
networks:
- webnet
networks:
webnet:
顺便说一下,如果我 运行 docker ps 使用我的应用程序图片,我会得到这个:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9633657f060 app1 "python3 dockerizi..." 5 seconds ago Up 5 seconds friendly_dijkstra
当我使用 django-compose.yml 和 docker ps
部署服务时,我得到:
`MacBook-Pro-de-Jesus:docker-django Almaral$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13677a71d9d5 app1:latest "python3 dockerizin..." 15 seconds ago Up 11 seconds getstartedlab_web.1.cq3zqmpfsii5g6m5r9qsnmtb1
c6693118ef70 app1:latest "python3 dockerizin..." 16 seconds ago Up 12 seconds getstartedlab_web.4.r472oh80s4zd1yymj447f1df6
f3822e47970b app1:latest "python3 dockerizin..." 16 seconds ago Up 12 seconds getstartedlab_web.2.lkp43v9h30esjohcnf3pe31hi
f66a4038ebdf app1:latest "python3 dockerizin..." 16 seconds ago Up 12 seconds getstartedlab_web.5.xxu01ruebd84tnlxmoymsu0vo
e3d31c419c11 app1:latest "python3 dockerizin..." 16 seconds ago Up 13 seconds getstartedlab_web.3.uqswgirmg22sjnekzmf5b4xo7`
进入您的 docker-compose 配置文件,将您的端口重定向从:8000:8000
修改为 127.0.0.1:8000:8000
您的 docker ps
输出在 PORTS 列中没有显示任何内容。这意味着没有从主机到容器的端口转发。
[...] STATUS PORTS NAMES
[...] Up 5 seconds friendly_dijkstra
如果您使用命令 docker run
到 运行 您的容器,您应该使用命令选项 -p hostPort:containerPort
[=20= 在主机和容器上明确指定端口号]
docker run -p 8000:8000 app1
现在,运行ning docker ps
应该显示端口转发。
[...] STATUS PORTS NAMES
[...] Up 5 seconds 0.0.0.0:8000->8000/tcp friendly_dijkstra
如果您使用 docker-compose
启动您的容器,主机和容器端口已经在您的 docker-compose.yml 文件中配置,因此您不需要命令行选项。
docker-compose up web
要使用 docker compose,您必须在主机上安装它。
这是一个 python 模块,因此您可以使用 pip pip install docker-compose