【发布时间】:2018-12-28 04:50:05
【问题描述】:
Django 服务器在 localhost 中运行良好。但是,当我尝试在 docker 容器上运行服务器时,使用 docker-compose 文件时找不到 manage.py 文件,即使我手动运行容器并运行服务器,它也不会出现在浏览器中。我怎么解决这个问题?
所以我在本地服务器上编写了所有代码测试并使用 dockerfile 构建了我的项目的映像。
我尝试在 docker 容器上运行服务器,但突然无法运行。 更糟糕的是,如果我使用 docker-compose 运行服务器,虽然我已经使用 'docker run -it $image_name sh' 进行了检查,但它找不到 manage.py 文件
这是我项目的代码
我是 docker 新手,也是编程新手。 希望你能给我帮助。谢谢!
文件结构
current directory
└─example
└─db.sqlite3
└─docker-compose.yml
└─Dockerfile
└─manage.py
└─Pipfile
└─Pipfile.lock
Docker 文件
# Base image - Python version
FROM python:3.6-alpine
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set work directory
WORKDIR /code
# Copy Pipfile
COPY Pipfile /code
COPY Pipfile.lock /code
# Install dependencies
RUN pip install pipenv
RUN pipenv install --system
# Copy files
COPY . /code/
docker-compose.yml
# docker-compose.yml
version: '3.3'
services:
web:
build: .
command: python /code/manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- 8000:8000
预期结果:在 web 浏览器中运行服务器,如在 chrome 中
实际结果:
使用 docker-compose 时: 提示中出现这样的错误:web_1 | python: 无法打开文件'/code/manage.py': [Errno 2] 没有这样的文件或目录
在 shell 上使用 'docker run -it $image_name sh' 和 'python manage.py runserver' 手动运行容器时: 服务器正在运行,但未连接到 Web 浏览器。 (不会出现在像chrome这样的浏览器中'
【问题讨论】:
-
我怀疑您的
/code是一个文件。您应该首先创建/code文件夹,然后在复制到文件夹时以斜杠结束目标。 -
使用
docker run手动运行时,服务器不会显示在浏览器中,因为您没有EXPOSEed 端口。 -
为什么不将你的命令改为“bash”而不是“manage.py runserver”并尝试手动运行它......或者至少检查/code中的内容
-
只需添加
-p 8000:8000即可在docker run命令中公开端口。出于不相关的原因,您还需要--rm,以免大量废弃实例污染您的库存。
标签: python python-3.x docker docker-compose dockerfile