【发布时间】:2020-03-29 11:32:26
【问题描述】:
他每个人。我正在使用 docker 并尝试对一个简单的 django 应用程序进行 docker 化,该应用程序将外部 http 连接到网页(真实网站) 所以当我在 Docker 文件中设置应该在容器中工作的 django 服务器的地址 - 127.0.0.1:8000。由于无法与网站建立外部连接,我的应用无法运行。
但是当我为我的服务器设置端口时:0.0.0.0:8000它开始工作了。
所以我的问题是:为什么会这样?在这种特殊情况下有什么区别?我只是想了解一下。
我阅读了一些关于 0.0.0.0 的文章,它就像一个允许使用 OC 默认端口的“通用”或“占位符”端口。
127.0.0.1 就像一个将请求重定向到当前机器的主机。我就知道。 但是当我在我的本地机器(主机:127.0.0.0:8000)上运行应用程序时,一切正常,应用程序可以连接到真实网站,但如果是 docker,它就停止工作了。
感谢您的帮助!
这是我的来源: 码头工人文件
FROM python:3.6
RUN mkdir /code
WORKDIR /code
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . ./
EXPOSE 8000
ENTRYPOINT [ "python", "manage.py" ]
CMD [ "runserver", "127.0.0.1:8000" ] # doesn't work
# CMD [ "runserver", "0.0.0.0:8000" ] - works
docker-compose.yml
version: "3"
services:
url_rest:
container_name: url_keys_rest
build:
context: .
dockerfile: Dockerfile
image: url_keys_rest_image
stdin_open: true
tty: true
volumes:
- .:/var/www/url_keys
ports:
- "8000:8000"
这是我在 127.0.0.1 的情况下收到的 http 错误。也许会有用。
http: error: ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /api/urls (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x10cd51e80>: Failed to establish a new connection: [Errno 61] Connection refused')) while doing GET request to URL: http://127.0.0.1:8000/api/urls
【问题讨论】:
标签: django docker tcp docker-compose ip