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

Docker 生成gcloud项目时出现问题:复制失败:未指定源文件,docker,google-cloud-platform,gcloud,Docker,Google Cloud Platform,Gcloud,我有一个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",&qu

我有一个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:\dev\shape-shop>docker build -t testtest:1.0
它完美地塑造了一个形象

我假设“gcloud builds submit”以同样的方式工作。我在谷歌云上有一个名为WhataButaneWProject的项目,因此在同一个目录中运行以下命令:

C:\dev\shape-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:\dev\shape-shop>
为什么它不能正确处理DockerFile


“gcloud build submit”是否会生成映像?上的文档完全是垃圾,我根本不知道这个“gcloud build submit”命令到底做了什么。

您必须指定一个源位置

gcloud builds提交${PWD}…
然后将${PWD}(通常使用
)复制到云构建中的
/workspace
(默认)目录,以便构建(特别是
复制${JAR_文件}…
可以继续

例子 注意最好不要将通配符复制到特定文件

以及:

以及:

docker build--tag=test--file=./Dockerfile。
docker运行--交互式--tty测试:最新版本
你好,弗雷迪!
然后,假设启用云的GCP项目(
{Project}
):

gcloud builds submit.-tag=gcr.io/${PROJECT}/test--PROJECT=${PROJECT}
docker运行--交互式--tty gcr.io/${PROJECT}/test:latest
...
你好,弗雷迪!
注意
gcloud builds submit
需要
${PWD}


我在哪里指定源位置?在DockerFile中?您不需要。
gcloud build submit。
将本地文件复制到
/workspace
(默认)docker文件可以从其中生成的目录。如果您可以
docker build--tag=test--file=./Dockerfile.
那么您应该能够
gcloud builds submit.-tag=…
我仍然感到困惑。我用“.”尝试了它它给了我同样的错误gcloud builds submit。--tag=gcr.io/whataboutanewproject/testxyz--project=whataboutanewproject:我也试过${PWD}。PWD代表密码吗?
FROM busybox
ARG JAR_FILE=target/test.txt
COPY ${JAR_FILE} test.txt
ENTRYPOINT ["more","test.txt"]
.
├── Dockerfile
└── target
    └── test.txt