簡體   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