为什么我可以直接在外壳程序中从docker-compose运行服务器,而不是从.yml文件运行
?对我来说,.yml文件的内容和shell中的docker-compose运行行极为相似。
我能想到的唯一区别可能是正确启动django服务器所需的某种级别的权限,但是我不知道该如何解决。 Docker在Windows 8.1机器上运行。我的虚拟机的共享文件夹是默认的c:\ Users。
我的文件夹包含一个新的Django项目以及这些docker文件。我篡改了python和django的不同版本,但结果是相同的。我已经在两次尝试之间清理了我的图片和容器
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
docker-compose.yml
version: '3'
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
Dockerfile
FROM python:3.6-alpine
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
requirements.txt
Django>=1.8,<2.0
我的操作系统是Windows 8.1
答案 0 :(得分:2)
我自己也遇到了这个问题,看来您需要为容器分配一个tty和一个stdin才能使runserver
工作:
python:
image: my-image:latest
stdin_open: true # docker run -i
tty: true # docker run -t
build:
context: ..
dockerfile: docker/Dockerfile
答案 1 :(得分:0)
我遇到了同样的问题,无法做任何其他事情。但是,当我转到docker机器docker-machine ip
的ip时,它返回192.168.99.100,然后通过转到192.168.99.100:8000,我的docker容器开始接收请求