在Docker容器中看不到Django
我想在一个简单的Docker容器中运行Django。
首先我用Docker-file构build我的容器。 没有什么特别的(只有FROM,RUN和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
问题是你在Docker容器中将开发服务器暴露给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
另外,为了获得更多灵感,您可以使用内置的开发服务器https://github.com/Niklas9/django-unixdatetimefield/blob/master/Dockerfile查看这个可用的Dockerfile来托pipeDjango应用程序。
您需要在您的Dockerfile中公开8000端口并运行像gunicorn这样的WSGI服务器。 如果你按照这里的步骤,你应该是好的… https://semaphoreci.com/community/tutorials/dockerizing-a-python-django-web-application
我同意Niklaus9的评论。 如果我可以build议一个增强尝试
python manage.py runserver [::]:8000
区别在于[::]支持ipv6地址。
我也注意到一些mongodb的包。 如果你想在本地testing和开发,你可以创builddocker容器,并使用docker compose在你的机器上testing你的应用,然后部署到dev / stage / prod环境。
你可以find更多关于如何设置一个Django的应用程序链接到数据库后端docker在本教程http://programmathics.com/programming/docker/docker-compose-for-django/ (免责声明:我是创造者的网站)
- 使用docker ALLOWED_HOSTS部署django应用程序
- “docker执行”环境不同于“docker运行”/“docker附加”环境?
- 在docker集装箱中优雅地停止芹菜
- 如何运行与Docker的OpenEats(Django配方pipe理)?
- Docker在django web应用+ postgres数据库上编写运行迁移
- Docker容器中的Django + uWSGI / nginx – ImportError:没有名为.wsgi的模块
- 无法在Docker上安装Django
- 将docker添加到django项目中:没有这样的文件或目录
- uWSGI通过Docker的Supervisord服务应用程序