在Docker容器内部-python:无法打开文件'./services/web/manage.py':[错误2]没有此类文件或目录

时间:2020-08-19 22:46:02

标签: python docker docker-compose

我正在尝试创建2个Docker容器:

  1. 对于我的WEB API
  2. 对于PostgreSQL数据库

我正在使用docker-compose来构建这些容器。即使我可以使用docker-compose build命令成功构建它们,但是每当我使用docker-compose logs -f命令检查日志时,都会收到以下错误消息:

...
db_1   | 2020-08-19 12:39:07.681 UTC [45] LOG:  database system was shut down at 2020-08-19 12:39:07 UTC
db_1   | 2020-08-19 12:39:07.686 UTC [1] LOG:  database system is ready to accept connections
web_1  | python: can't open file 'manage.py': [Errno 2] No such file or directory
nlp-influencertextanalysis_web_1 exited with code 2

对于db容器,一切似乎都很好,但是由于某些原因,Web容器中的Python无法找到manage.py文件。这是我的文件结构:

enter image description here

这是我的docker-compose.yml的代码:

version: '3.7'

services:
  web:
    build: ./services/web
    command: python manage.py run -h 0.0.0.0
    volumes:
      - ./services/web/:/usr/src/app/
    ports:
      - 5000:5000
    env_file:
      - ./.env.dev
    depends_on:
      - db
  db:
    image: postgres:12-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=user1
      - POSTGRES_PASSWORD=test123
      - POSTGRES_DB=influencer_analysis

volumes:
  postgres_data:

这是我的Dockerfile代码:

    FROM python:3.8.1-slim-buster AS training
    # set work directory
    WORKDIR /usr/src/app
    
    # set environment variables
    ENV PYTHONDONTWRITEBYTECODE 1
    ENV PYTHONUNBUFFERED 1
    
    # install system dependencies
    RUN apt-get update && apt-get install -y netcat
    
    RUN pip install --upgrade pip
    COPY ./requirements.txt /usr/src/app/requirements.txt
    RUN pip install -r requirements.txt
    # install NLTK dependencies
    RUN python -c "import nltk; nltk.download('punkt')"
    
    # copy project
    COPY . /usr/src/app/
    
    WORKDIR /usr/src/app/experiments
    RUN python train.py --data data/HaInstagramPostDetails.xlsx --update 1

我应该注意,当使用Docker文件中的/usr/src/app命令执行train.py并且RUN时,我已经打印出manage.py中的所有罚款。

2 个答案:

答案 0 :(得分:1)

我相信问题在于您已经在Docker文件的末尾更改了工作目录。

您可以尝试提供指向manage.py文件或的确切路径。 在指向应用程序目录的末尾的Docker文件中更改工作目录。

答案 1 :(得分:0)

我认为更改工作目录时出现问题。应该是

WORKDIR /usr/src/app/web/experiments基于文件夹结构。