繁体   English   中英

运行Docker Django容器时无法连接到服务器

[英]Unable to connect to server when running docker django container

我已经浏览了本网站上的问题,但无法解决此问题。

我创建并运行了django应用程序的映像,但是当我尝试从浏览器查看该应用程序时,该页面无法加载(无法建立与服务器的连接)

我使用的是docker工具箱,我使用的是OS X El Capitan,Macbook是2009年的产品。

容器IP为:192.168.99.100

django项目的根称为“ Web应用程序”,并且是包含manage.py的目录。 我的Dockerfile和我的requirements.txt文件位于此目录中。

我的dockerfile是:

FROM python:3.5
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]  

我的requirements.txt具有django和mysqlclient

我的django应用程序使用Mysql,并且尝试将浏览器中的dockerized django应用程序链接到标准mysql映像,也没有将其链接到标准mysql映像。 在这两种情况下,我只会看到以下错误:

问题加载页面无法建立与服务器的连接

当我尝试将django容器链接到我使用的mysql容器时:

docker run --link mysqlapp:mysql -d app

其中mysqlapp是我的mysql映像,而“ app”是我的django映像。

在我的django settings.py中,允许的主机为:

ALLOWED_HOSTS: ['localhost', '127.0.0.1', '0.0.0.0', '192.168.99.100']

同样,当我使用docker build时,成功创建了映像,并且该映像已成功作为容器运行。 为什么页面无法加载到浏览器中?

我建议使用yml文件和docker compose。 下面是一个入门的模板:

[Dockerfile]

FROM python:2.7
RUN pip install Django
RUN mkdir /code
WORKDIR /code
COPY code/ /code/

文件在代码目录中的位置。

[搬运工-compose.yml]

version: '2'
services:
  db:
    image: mysql

  web0:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8000:8000"
    depends_on:
      - db

您在Dockerfile中定义的工作目录路径可能存在问题。 希望以上有帮助。

salehinejad提供的解决方案似乎已经足够好了,尽管我还没有亲自对其进行过测试,但是如果您不想使用yml文件并且希望按照自己的方式去做,那么您应该通过添加来公开端口

-p 0:8000

在您的运行命令中

所以你应该看起来像这样:

docker run -p 0:8000 --link mysqlapp:mysql -d app 

我怀疑您没有告诉Docker与您的VM对话,并且您的容器正在主机上运行(如果您可以在localhost进行访问,这就是问题所在)。

请查看此帖子以获取解决方法:

使用IP连接到Docker容器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM