首页 > 解决方案 > App Engine Flex 自定义 - Dockerfile 构建过程中缺少项目文件

问题描述

我正在尝试使用 App Engine Flex 部署 Java 应用程序,但不幸的是 - 在构建 Docker 映像时部署进入阶段时,它似乎是在某个隔离环境中运行的,而不是在我的本地目录中,所有必需的文件都用于构建过程。

我的app.yaml文件如下所示:

service: default
env: flex
runtime: custom
handlers:
  - url: .*
    script: auto
manual_scaling:
  instances: 1
network: {}

我的Dockerfile

FROM openjdk:11-jre-slim
ADD . /app
WORKDIR /app
RUN ls -halt
CMD ["java", "-jar", "app.jar"]

我正在运行命令:

gcloud auth activate-service-account --key-file mykeyfile.json
gcloud --quiet --project myprojectname app deploy app.yaml

mykeyfile.json持有具有所有者角色的服务帐户的凭据。

命令RUN ls -halt显示,该目录为空 - 没有从我的机器复制任何文件。

如何提供在 Docker 映像构建期间使用的所需文件?

标签: google-app-engineapp-engine-flexible

解决方案


确保部署中缺少的文件未在您的.gcloudignore文件中列出。

根据.gcloudignore 文档

如果.gcloudignore在顶层目录中调用了一个文件要上传,它指定的文件将被忽略。

也许在部署期间文件/目录被错误地添加到.gcloudignore文件中,因此通过从文件中删除您希望部署的.gcloudignore文件,您将能够这样做。


推荐阅读