为了账号安全,请及时绑定邮箱和手机立即绑定

Google Cloud Platform 管道/容器构建器问题使用 COPY 或 ADD 命令为

Google Cloud Platform 管道/容器构建器问题使用 COPY 或 ADD 命令为

繁花如伊 2022-06-23 17:58:56
使用 Spring Boot (2.1.3)、Java 8、Maven 创建了基本的 HelloWorld 微服务。pom.xml 具有如下所示的 Maven 插件条目<plugin>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>            <configuration>                    <mainClass>com.example.HelloWorldApplication</mainClass>            </configuration>        </plugin>Dockerfile 如下所示FROM openjdk:8VOLUME /tmpADD target/helloworld.jar helloworld.jarEXPOSE 8081ENTRYPOINT ["java","-jar","helloworld.jar"]使用命令在本地计算机上创建图像docker build . -t helloworld:v1通过从中创建容器来验证。将代码签入到 docker-hub 帐户和 github 帐户。登录谷歌云平台(GCP),创建kubernetes集群,通过配置helloworld微服务代码所在的github url创建管道(使用容器构建器)。运行构建有两个选项(使用 Dockerfile 或 cloudbuild.yaml)。我正在使用 Dockerfile 来运行构建。当构建被启动运行时,Dockerfile 中的这一行失败ADD target/helloworld.jar helloworld.jarGCP 日志中出现的错误:ADD failed: stat /var/lib/docker/tmp/docker-builderxxxxxx/target/helloworld.jar: no such file or directory我尝试用 COPY 命令替换它,但问题仍然相同。注意:我尝试使用 cloudbuild.yaml 以下是我的 cloudbuild.yaml 的外观:  steps:  # Build the helloworld container image.  - name: 'gcr.io/cloud-builders/docker'    args:      - 'build'      - '-t'      - 'gcr.io/${PROJECT_ID}/helloworld:${TAG_NAME}'      - '.'这没有任何区别。问题保持不变。知道 Springboot Java 应用程序是否有一些特定的配置可以在 Google Cloud Platform 中构建良好的 Dockerfile?
查看完整描述

1 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

看起来文件路径有问题。


尝试以下更新的 Dockerfile,它显式设置工作目录。在图像之间复制 jar 时,它还使用显式文件路径。


FROM maven:3.5-jdk-8-slim AS build

WORKDIR /home/app

COPY src     /home/app/src

COPY pom.xml /home/app

RUN mvn clean package


FROM openjdk:8-jre-slim

COPY --from=build /home/app/target/helloworld-0.0.1-SNAPSHOT.jar /usr/local/lib/helloworld.jar

EXPOSE 8081

ENTRYPOINT ["java","-jar","/usr/local/lib/helloworld.jar"]

补充说明:

  • 有关构建 Spring Boot 应用程序的完整示例,请参阅相关答案

  • 我将第二阶段基于 JRE 图像。减小输出图像的大小。


查看完整回答
反对 回复 2022-06-23
  • 1 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信