Docker Compose构建报错:无法找到Dockerfile问题求助
问题解决:Docker Compose构建报错修复
1. 核心报错原因:找不到自定义命名的Dockerfile
你的app1/app2/app3目录下的Dockerfile命名为Dockerfile_app1/Dockerfile_app2/Dockerfile_app3,但Docker Compose默认会在指定的context目录下寻找名为Dockerfile的文件,因此触发"找不到文件"的报错。
修复方案:在每个app的build配置中显式指定Dockerfile名称,修改后的docker-compose.yml如下:
version: '3' services: nginx: image: nginx ports: - 80:80 environment: - MONGO_INITDB_ROOT_USERNAME=admin - MONGO_INITDB_ROOT_PASSWORD=password volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - app1 - app2 - app3 app1: build: context: ./app1 dockerfile: Dockerfile_app1 # 新增指定Dockerfile名称 volumes: - ./app1_logs:/app/logs app2: build: context: ./app2 dockerfile: Dockerfile_app2 # 新增指定Dockerfile名称 volumes: - ./app2_logs:/app/logs app3: build: context: ./app3 dockerfile: Dockerfile_app3 # 新增指定Dockerfile名称 volumes: - ./app3_logs:/app/logs db: image: mongo environment: - MONGO_INITDB_ROOT_USERNAME=admin - MONGO_INITDB_ROOT_PASSWORD=password volumes: - ./db_data:/data/db - ./db_logs:/var/log/mongodb volumes: app1_logs: app2_logs: app3_logs: db_data: db_logs:
2. Dockerfile中的pip命令错误
你当前Dockerfile里的RUN pip install requirements.txt写法错误,pip会将requirements.txt当作包名尝试安装,而非读取文件内的依赖列表。
修复方案:修改每个app目录下Dockerfile的pip命令:
FROM python:3.9 WORKDIR /app COPY . /app RUN pip install -r requirements.txt # 修正为读取依赖文件的正确命令 EXPOSE 80 CMD ["python", "app3.py"]
3. 额外检查项
- 确认每个app目录下确实存在对应的
Dockerfile_appX、requirements.txt和appX.py文件,无拼写错误。 - 运行
docker-compose up --build时,确保当前工作目录是docker-compose.yml所在的根目录。
内容的提问来源于stack exchange,提问作者Inbar Manor
相关产品推荐
相关产品推荐

