Skip to main content
 首页 » 编程设计

python之使用 docker-compose 处理 Dockerising Django 应用程序的问题

2024年09月03日33cloudgamer

我是 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 然后将在构建阶段创建服务器并将文件复制到它