Docker compose Sping Boot + Neo4j

cgyqldqp  于 2023-05-06  发布在  Docker
关注(0)|答案(1)|浏览(164)

我有一个docker文件,在那里我克隆了我的git仓库,创建了jar并运行。

FROM openjdk:17-jdk-slim
RUN apt-get update && apt-get install -y git maven
RUN git clone <git_url> /app/socialB
WORKDIR /app/socialB
RUN mvn package
CMD ["java", "-jar", "/target/socialB.jar"]

我在docker compose中使用这个DockerFile。

version: '3'
services:
  neo4j:
    image: neo4j:4.3.6
    container_name: neo4j
    ports:
      - "7474:7474"
      - "7687:7687"
    volumes:
      - ./data:/data
    environment:
      - NEO4J_AUTH=neo4j/password
  spring-boot:
    build:
      context: .
      dockerfile: DockerFile
    container_name: spring-boot
    ports:
      - "8080:8080"
    environment:
      - DB_URL=neo4j
      - DB_PORT=7687
      - SPRING_DATASOURCE_USERNAME=neo4j
      - SPRING_DATASOURCE_PASSWORD=password
    depends_on:
      - neo4j

两个文件都在同一个文件夹中。
Neo4j镜像工作正常,但Sping Boot 给出以下错误:

spring-boot  | Error: Unable to access jarfile /target/socialB.jar
spring-boot exited with code 1

除了使用,我还使用了:

RUN ./mvnw package

完美地创建目标文件夹。
将路径从/target/socialB. jar更改为/app/SocialB/target/socialB. jar。
在本地,一切都很好。

7eumitmz

7eumitmz1#

您尝试从/target/socialB.jar启动应用程序,但您将存储库内容放在/app/socialB中,然后从那里打包应用程序,因此jar文件最终将位于/app/socialB/target/socialB.jar
尝试将Dockerfile中的最后一行更改为

CMD ["java", "-jar", "/app/socialB/target/socialB.jar"]

相关问题