我试图在两个单独的容器中运行两个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目录
你的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
...