从类似的问题中复制我的答案。
GAE Flexible 上具有不同 dockerfile 的多个服务
tl;dr:构建一个单独的 docker 镜像,将其推送到 GCR,使用该镜像进行部署。
指定自定义运行时。在本地构建映像,对其进行标记,然后将其推送到 Google Container Registry (GCR),然后部署您的服务,指定自定义服务文件,并使用 --image-url 选项在 GCR 上指定远程映像。
这是一个在共享相同代码的 2 个服务中完成不同入口点的示例:...这是假设正在使用“弹性”而不是“标准”应用程序引擎产品。
假设您有一个名为my-proj的项目,该项目
有一个不重要的默认服务和一个名为queue-processor的第二个服务,它使用同一目录中的大部分相同代码。为它创建一个名为QueueProcessorDockerfile的单独 dockerfile
和一个名为queue-processor-app.yaml的单独 app.yaml来告诉谷歌应用引擎我想要发生什么。
QueueProcessorDockerfile
FROM node:10
# Create app directory
WORKDIR /usr/src/app
COPY package.json ./
COPY yarn.lock ./
RUN npm install -g yarn
RUN yarn
# Bundle app source
COPY . .
CMD [ "yarn", "process-queue" ]
*当然,我的 package.json 中有一个“进程队列”脚本
queue-processor-app.yaml
runtime: custom
env: flex
... other stuff...
...
- 构建并标记 docker 映像在此处查看 googles 指南 -> https://cloud.google.com/container-registry/docs/pushing-and-pulling
docker build -t eu.gcr.io/my-proj/queue-处理器 -f QueueProcessorDockerfile 。
- 将其推送到 GCR docker push eu.gcr.io/my-proj/queue-processor
- 部署服务,指定 google 应该使用哪个 yaml 配置文件,以及您推送的图像 url gcloud app deploy queue-processor-app.yaml --image-url eu.gcr.io/my-proj/queue-processor