2017-01-18 46 views
0

我想在一個簡單的Docker容器中運行Django。在Docker容器中看不到Django

首先我用Docker-file構建了我的容器。有沒有什麼特別的東西在裏面(只,運行和COPY命令)

然後我跑我的容器命令

docker run -tid -p 8000:8000 --name <container_name> <image> 

進入我的容器:

docker exec -it <container_name> bash 

冉Django的服務器:

python manage.py runserver 

了:

Starting development server at http://127.0.0.1:8000/ 

但是,當我去127.0.0.1:8000我什麼也看不到:

The 127.0.0.1 page isn’t working 

有沒有Nginx的或其他工作服務器。

我在做什麼錯?

更新1(Dockerfile)

FROM ubuntu:16.04 
MAINTAINER Max Malyshev <user> 
COPY . /root 
WORKDIR /root 
RUN apt-get update 
RUN apt-get install python-pip -y 
RUN apt-get install postgresql -y 
RUN apt-get install rabbitmq-server -y 
RUN apt-get install libpq-dev python-dev -y 
RUN apt-get install npm -y 
RUN apt-get install mongodb -y 
RUN pip install -r requirements.txt 
+0

讓我們看看你的Dockerfile – denvaar

+1

嘗試0.0。 0.0而不是127.0.0.1 – denvaar

回答

3

的問題是,你正在開發服務器暴露在127.0.0.1您多克爾容器內,而不是在主機操作系統。 如果您訪問另一個控制檯到您的容器,並執行一個http請求127.0.0.1:8000它將工作。

關鍵是要確保Docker容器將開發服務器暴露給所有IPv4地址,您可以使用0.0.0.0而不是127.0.0.1來完成此操作。

嘗試運行以下命令來啓動你的Django開發服務器來代替:

python manage.py runserver 0.0.0.0:8000 

此外,對於更多的靈感,你可以檢查出這方面的工作Dockerfile託管與Django應用程序內置的開發服務器https://github.com/Niklas9/django-unixdatetimefield/blob/master/Dockerfile

0

我同意Niklaus9的評論。如果我可以建議加強嘗試

python manage.py runserver [::]:8000 

區別在於[::]支持ipv6地址。

我也注意到一些mongodb的包。如果您想在本地進行測試和開發,您可以創建docker容器,並在部署到dev/stage/prod環境之前使用docker compose在您的機器上測試您的應用程序。

您可以瞭解更多關於如何設置鏈接到泊塢窗後端數據庫一個Django應用程序在本教程中http://programmathics.com/programming/docker/docker-compose-for-django/(聲明:我是該網站的創建者)

+0

不喜歡碼頭撰寫。在我看來,處理它比使用Makefile + Dokerfiles +'docker network'更難。但也許我沒有花足夠的時間去學習。 – Snobby

+0

@一天結束時使用您感覺最舒適的工具和技術:) – SeekingAlpha

相關問題