【问题标题】:Problem deploying MERN app with Docker to GCP App Engine - should deploy take multiple hours?使用 Docker 将 MERN 应用程序部署到 GCP App Engine 时出现问题 - 部署需要几个小时吗?
【发布时间】:2020-07-28 18:11:34
【问题描述】:

我对 Dev Ops 缺乏经验,这促使我使用 Google App Engine 来部署我的 MERN 应用程序。目前,我有以下Dockerfileentrypoint.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


【解决方案1】:

您上传的文件可能比您需要的多。

使用.gcloudignore 文件来描述您不想上传的文件/文件夹。 LINK

您可能需要更改当前项目的文件结构。

此外,可能值得进一步研究Standard nodejs10 runtime 的使用。它的上传和启动速度比灵活的替代方案要快得多(自定义环境是 App Engine Flex 的一部分)。然后您可以将每个部分部署到different service

【讨论】:

    猜你喜欢
    • 2020-01-13
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2020-01-22
    • 2019-07-12
    • 2020-04-06
    • 2017-11-27
    相关资源
    最近更新 更多