【问题标题】:Docker Compose getting exceptionDocker Compose 出现异常
【发布时间】:2019-10-03 08:06:10
【问题描述】:

我有一个 Spring Boot 应用程序,已部署在 docker 容器上,一切正常,但我想使用 docker compose 在 docker 容器中部署和运行该应用程序。

这是我的 DockerFile

FROM java:8
VOLUME /tmp
COPY /target/order-0.0.1-SNAPSHOT.jar order.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/order.jar"]

第 1 步:- 使用 mvn clean package 创建 jar
第 2 步:- docker build -t 命令
第 3 步:- docker run -it -d -p 8080:8080

这里一切正常

但是,如果我不执行第 1 步并且想要使用 docker-compose 将应用程序部署在容器中。

在尝试执行 docker-compose up 时出现异常 /target/order-0.0.1-SNAPSHOT.jar 未找到

那么如何在docker-compose中执行mvn package命令

他们还有其他方法可以实现吗?

这是我的 docker-compose.yml

version: '3'
services:
  order:
    restart: always
    build: ./order
    working_dir: /order
    volumes:
      - /tmp:/logs
    expose:
      - "8080"

【问题讨论】:

  • 你检查过.jar文件是否真的存在吗?
  • 您可以拥有一个已经安装了mvn 的基础映像,并将您的应用程序打包在Dockerfile 本身中。
  • 谢谢@Maroun,会尝试的,但如果你能帮助我使用 DockerFile,它会帮助我
  • 你能准确地显示你的 Dockerfile 的位置,你的 compose 文件的位置,你执行这些命令的目录吗?如果根本问题是文件不在您期望的位置,那么在 docker 容器中构建应用程序将无济于事。

标签: java docker docker-compose microservices


【解决方案1】:

试试这个 Dockerfile

FROM maven:alpine AS build
COPY src /home/app/src
COPY pom.xml /home/app 
RUN mvn -f /home/app/pom.xml clean package


FROM openjdk:alpine
COPY --from=build /home/app/target/*.jar /usr/local/lib/demo.jar
ENTRYPOINT ["java","-jar","/usr/local/lib/demo.jar"]  

如果您遇到 Can't execute jar-file: “no main manifest attribute”之类的错误
替换最后一条命令

ENTRYPOINT ["java","-cp","/usr/local/lib/demo.jar","com.packagename.classnamewithoutextension"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 2021-10-24
    • 2020-06-18
    • 2019-04-20
    • 2022-06-12
    相关资源
    最近更新 更多