生成gcloud项目时出现问题:COPY失败:未指定源文件



我有一个java项目,它的DockerFile如下所示:

FROM openjdk:8-jdk-alpine
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} shape-shop-backend.jar
ENTRYPOINT ["java","-jar","/shape-shop-backend.jar"]

如果我这样运行docker:

C:devshape-shop>docker build -t testtest:1.0

它完美地塑造了一个形象。

我的假设是;gcloud构建提交";以同样的方式工作。我在谷歌云上有一个名为whataboutanewproject的项目,所以我在同一目录中运行以下命令:

C:devshape-shop>gcloud builds submit --tag gcr.io/whataboutanewproject/shapeshop

但我得到了这个错误:

Digest: sha256:94792824df2df33402f201713f932b58cb9de94a0cd524164a0f2283343547b3
Status: Downloaded newer image for openjdk:8-jdk-alpine
---> a3562aa0b991
Step 2/6 : RUN addgroup -S spring && adduser -S spring -G spring
---> Running in 36cf2156a797
Removing intermediate container 36cf2156a797
---> 7320b32f6fe1
Step 3/6 : USER spring:spring
---> Running in f439aa9ca30e
Removing intermediate container f439aa9ca30e
---> 67f952c7bc2a
Step 4/6 : ARG JAR_FILE=target/*.jar
---> Running in 0bcfbf5f3b79
Removing intermediate container 0bcfbf5f3b79
---> 7519fa3bdc2f
Step 5/6 : COPY ${JAR_FILE} shape-shop-backend.jar
COPY failed: no source files were specified
ERROR
ERROR: build step 0 "gcr.io/cloud-builders/docker" failed: step exited with non-zero status: 1
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ERROR: (gcloud.builds.submit) build d3704337-88de-4dda-a120-ebd2a01ee8c9 completed with status "FAILURE"
C:devshape-shop>

为什么它不能正确处理DockerFile?

是否";gcloud构建提交"甚至建立一个图像?网站上的文档是如此的垃圾,以至于我根本不知道这是什么;gcloud构建提交"命令甚至可以。

我遇到了一个类似的问题,并在gcloud构建提交的文档中发现,如果您没有.gcloudignore文件,将使用您的.gitignore文件,这对我来说是个问题。

您必须指定一个源位置。

gcloud builds submit ${PWD} ...然后将例如${PWD}(通常使用.(复制到Cloud Build中的/workspace(默认(目录,以便构建(特别是COPY ${JAR_FILE} ...(可以继续。

示例

FROM busybox
ARG JAR_FILE=target/test.txt
COPY ${JAR_FILE} test.txt
ENTRYPOINT ["more","test.txt"]

注意最好而不是将通配符复制到特定文件

和:

.
├── Dockerfile
└── target
└── test.txt

和:

docker build --tag=test --file=./Dockerfile .
docker run --interactive --tty test:latest
Hello Freddie!

然后,假设一个启用云的GCP项目({PROJECT}(:

gcloud builds submit . --tag=gcr.io/${PROJECT}/test --project=${PROJECT}
docker run --interactive --tty gcr.io/${PROJECT}/test:latest
...
Hello Freddie!

注意gcloud builds submit需要.${PWD}

最新更新