无法使用docker-compose运行两个docker容器。我收到错误:“python:无法打开文件'app.py':[Errno 2]没有这样的文件或目录”

问题描述 投票:0回答:1

我试图在两个单独的容器中运行两个Web服务,但无法同时运行它们。另外他们都工作。

我的项目结构是这样的:

/
- docker-compose.yml
- Dockerfile
- pom.xml
- src/
- ... other spring boot web service folders and files
- Pirmas/
  -Dockerfile
  -app.py
  -docker-compose.yml (it is not used when running both services)

一个Web服务位于主目录中,另一个位于“Pirmas”目录中。我尝试从spring boot服务所在的基本文件夹运行docker composer。我使用命令“docker-compose up --build -d”。

然而,在构建之后,只启动了Spring引导Web服务,当我检查烧瓶Web服务的日志时,它说“python:无法打开文件'app.py':[Errno 2]没有这样的文件或目录”

我的春季启动服务Dockerfile:

FROM maven:3.6-jdk-8 AS build  

WORKDIR /code

COPY src /code/app/src
COPY pom.xml /code/app
RUN mvn -f /code/app/pom.xml clean install

FROM openjdk:8
COPY --from=build /code/app/target/SpringWebServiceToDoList-0.0.1-SNAPSHOT.jar SpringWebServiceToDoList-0.0.1-SNAPSHOT.jar
EXPOSE 5000
CMD ["java","-jar","SpringWebServiceToDoList-0.0.1-SNAPSHOT.jar"]

我的docker-compose.yml文件位于同一目录中:

version: '3'

services:
  springboot-docker-compose-app-container:
    build: .
    ports:
      - "80:5000"
    depends_on:
    - friendservice
    volumes:
    - .:/code
    networks:
    - mynet
  friendservice:
    build: ./Pirmas
    command: python app.py
    ports:
    - 5000:5001
    networks:
    - mynet

networks:
    mynet:

我在Flash网站服务中的Dockerfile:

FROM python:3

WORKDIR /code

COPY requirements.txt ./
RUN pip install -r requirements.txt

最后我没假设使用的docker-compose.yml(来自于烧瓶网站服务目录“Pirmas”):

web:
  build: .
  command: python app.py
  ports:
    - "80:5000"
  volumes:
    - .:/code

我尝试了什么:

我尝试删除卷。在docker-compose.yml中尝试了不同的路径,如python ./Pirmas/app.py

我会感激任何帮助或想法。

谢谢。

编辑

我在尝试启动另一个项目时遇到了类似的问题,但这次是一个Spring Boot应用程序。

The project structure:/
    - docker-compose.yml
    - Dockerfile
    - pom.xml
    - src/
    - ... other spring boot web service folders and files
    - rest-bookstore/
      -Dockerfile
      -rest
        -src
        -target
          -gs-rest-service-0.1.0.jar

第一个Spring启动服务的旧Dockerfile与新的相同:

FROM maven:3.6.0-jdk-8-alpine
COPY rest /rest
WORKDIR /rest
RUN mvn clean package
CMD java -jar target/gs-rest-service-0.1.0.jar --server.port=5000

还有docker-compose.yml

version: '3'

services:
  springboot-docker-compose-app-container:
    build: .
    ports:
      - "80:5000"
    depends_on:
    - friendservice
    volumes:
    - .:/code
    networks:
    - mynet
  friendservice:
    build: ./rest-bookstore
    volumes:
    - ./rest-bookstore:/rest
    ports:
    - 5000:5001
    networks:
    - mynet

networks:
    mynet:

我收到错误:

无法访问jarfile target / gs-rest-service-0.1.0.jar

我不知道为什么因为在新的dockerfile中它复制了整个rest目录

docker docker-compose dockerfile
1个回答
0
投票

你的friendservice里面没有app.py。你应该复制它,以便你的Dockerfile看起来像

FROM python:3

WORKDIR /code

COPY requirements.txt ./
RUN pip install -r requirements.txt

COPY app.py ./

或者你可以在你的docker-compose.yml中附加音量,看起来像

...
  friendservice:
    build: ./Pirmas
    command: python app.py
    ports:
    - 5000:5001
    volumes:
    - ./Pirmas:/code
    networks:
    - mynet
...
© www.soinside.com 2019 - 2024. All rights reserved.