运行docker django容器时无法连接到服务器

时间:2017-01-18 01:23:46

标签: python mysql django docker docker-machine

我查看了本网站上的问题,但我无法解决这个问题。

我创建并运行了我的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映像。在这两种情况下,我只看到以下错误:

  

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

当我尝试将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时成功创建了图像,并且它成功地作为容器运行。为什么页面没有加载到浏览器中?

3 个答案:

答案 0 :(得分:3)

我建议使用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中定义的工作目录路径可能存在问题。希望以上有所帮助。

答案 1 :(得分:2)

salehinejad提供的解决方案似乎已经足够好了,虽然我没有亲自测试过,但是如果你不想使用yml文件并希望按照自己的方式进行测试,那么你应该通过添加

  

-p 0:8000

在你的跑步命令

所以你应该这样:

UserDefaults.standard.setValue(true, forKey:"_UIConstraintBasedLayoutLogUnsatisfiable")

答案 2 :(得分:0)

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

请参阅此帖子以获得解决方案:

Connect to docker container using IP