【问题标题】:Docker has to build spring app and then run itDocker 必须构建 spring 应用程序然后运行它
【发布时间】:2019-05-25 16:04:03
【问题描述】:

我无法让 Docker 构建我的应用程序然后运行它。我有一个练习,我无法预先构建应用程序然后运行它,Docker 必须进行构建。

Here's my Dockerfile:
FROM maven:3.5.3-alpine
WORKDIR /usr/src
COPY . .
RUN mvn clean install

COPY ./target/worker-0.0.1-SNAPSHOT.jar worker-0.0.1-SNAPSHOT.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "worker-0.0.1-SNAPSHOT.jar"]

做完之后 docker build -t worker .

我收到一个错误:

[INFO] Installing /usr/src/target/worker-0.0.1-SNAPSHOT.jar to /root/.m2/repository/com/heiko/worker/0.0.1-SNAPSHOT/worker-0.0.1-SNAPSHOT.jar
[INFO] Installing /usr/src/pom.xml to /root/.m2/repository/com/heiko/worker/0.0.1-SNAPSHOT/worker-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 41.059 s
[INFO] Finished at: 2018-12-27T16:04:10Z
[INFO] ------------------------------------------------------------------------
Removing intermediate container d8d33baa7558
 ---> 3509c06f8736
Step 5/7 : COPY ./target/worker-0.0.1-SNAPSHOT.jar worker-0.0.1-SNAPSHOT.jar
COPY failed: stat /var/lib/docker/tmp/docker-builder701090107/target/worker-0.0.1-SNAPSHOT.jar: no such file or directory

【问题讨论】:

    标签: spring-boot docker docker-compose dockerfile


    【解决方案1】:

    worker-0.0.1-SNAPSHOT.jar 是 mvn clean install 构建的吗? COPY 将文件从 docker 主机复制到 docker 容器(就像您在 COPY . . 中使用的一样,将 docker 构建的目标目录复制到 WORKDIR,将您的代码复制到容器中)。

    如果你想在容器内移动文件,你应该使用

    RUN cp ./target/worker-0.0.1-SNAPSHOT.jar worker-0.0.1-SNAPSHOT.jar
    

    这将在 docker 容器中创建文件的 2 个副本,一个位于 target/worker...jar,另一个位于 ./worker...jar。如果您只想要一个副本,则必须改用mv(移动)并将文件移动到创建它的同一层,否则docker的分层系统将保留旧位置反正。我认为您可以通过以下方式实现它:

    运行 mvn clean install && mv ./target/worker-0.0.1-SNAPSHOT.jar worker-0.0.1-SNAPSHOT.jar

    提示进一步优化图像大小和安全性:您可以使用多阶段构建使最终图像更小(https://aboullaite.me/multi-stage-docker-java/ 似乎是一个很好的 maven 解释。)

    【讨论】:

      猜你喜欢
      • 2023-02-16
      • 2017-04-14
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多