我是 Docker 的新手,我想将 Django 应用程序停靠以作为容器运行。如下所示。
这是 Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
这里是 docker-compose.yml conf
version: '3'
networks:
mynetwork:
driver: bridge
services:
db:
image: postgres
ports:
- "5432:5432"
networks:
- mynetwork
environment:
POSTGRES_USER: xxxxx
POSTGRES_PASSWORD: xxxxx
web:
build: .
networks:
- mynetwork
links:
- db
environment:
SEQ_DB: cath_local
SEQ_USER: xxxxx
SEQ_PW: xxxxx
PORT: 5432
DATABASE_URL: postgres://xxxxx:xxxxx@db:5432/cath_local
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
在我的 docker shell 上,我指向 Dockerfile 目录,如果我从 y 路径运行 ls 命令,我会看到 manage.py 文件,但如果我运行:
docker-compose up
我收到这个错误:
web_1 | python: can't open file 'manage.py': [Errno 2] No such file or directory core_web_1 exited with code 2
为什么我的应用找不到与“docker-compose up”命令位于同一位置的 manage.py 文件?
PS:当我运行 docker-compose 命令时,没有创建/code 文件夹。是否正确?
非常感谢
请您参考如下方法:
尝试像这样编辑您的 Dockerfile:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
并从 compose 中删除 command: python manage.py runserver 0.0.0.0:8000
我假设 manage.py 位于 /code/ 文件夹中,因为您在 dockerfile 中有 然后将在构建阶段创建服务器并将文件复制到它WORKDIR/code
