【发布时间】:2020-07-28 18:11:34
【问题描述】:
我对 Dev Ops 缺乏经验,这促使我使用 Google App Engine 来部署我的 MERN 应用程序。目前,我有以下Dockerfile 和entrypoint.sh:
# Dockerfile
FROM node:13.12.0-alpine
WORKDIR /app
COPY . ./
RUN npm install --silent
WORKDIR /app/client
RUN npm install --silent
WORKDIR /app
RUN chmod +x /app/entrypoint.sh
ENTRYPOINT [ "/app/entrypoint.sh" ]
# Entrypoint.sh
#!/bin/sh
node /app/index.js &
cd /app/client
npm start
React 前端位于 client 文件夹中,该文件夹位于 Node 应用程序的基本目录中。我正在尝试将这些部署在一起,并且通常更喜欢一起部署而不是单独部署。运行 docker-compose up --build 成功在 localhost 上重新部署我的应用程序。
我创建了一个非常简单的app.yaml 文件,这是 Google App Engine 所需要的:
# app.yaml
runtime: custom
env: standard
在使用 Dockerfile 配置运行时环境时,我阅读了文档 here 以使用 runtime: custom。我最初选择了标准环境而不是灵活环境,因此我在app.yaml 中添加了env: standard 作为另一行。
在安装并运行gcloud app deploy 之后,事情开始了,但是在过去的几个小时里,这是我在终端窗口中看到的:
时间似乎比部署应用程序的正确时间要长,我开始认为我做错了什么。
【问题讨论】:
-
“长话短说”你在上传库和模块吗?
-
可能是的。我从我的节点应用程序的根目录运行
gcloud app deploy,其中包含两个节点的库,以及包含用于反应的库的客户端文件夹——28376 是很多文件吗? -
gcloud 必须有一些忽略文件之类的东西,你应该尝试一下,你可以将代码发送到 gcloud,你应该在云本身上重新安装依赖项并启动你的服务器
-
难道应用引擎/gcloud 不需要这些库吗?如果我忽略它们,应用引擎将如何使用这些库?
-
一般来说不,你只需要上传你的代码或者在这种情况下你的图片。最好的 App Engine 工作的文件越少。
标签: node.js reactjs docker google-app-engine google-cloud-platform