繁体   English   中英

错误:在 Cloud Build 上找不到模块“/app/__sapper__/build”

[英]Error: Cannot find module '/app/__sapper__/build' on Cloud Build

我正在尝试为部署到 Cloud Run 的工兵项目设置自动 Cloud Build。 但是我在部署时遇到错误。 这是我第一次尝试 CI 工作流程,所以我确定我做错了很多事情。

云构建.yaml

steps:
  - name: "gcr.io/cloud-builders/gcloud"
    args:
      - kms
      - decrypt
      - --ciphertext-file=.env.enc
      - --plaintext-file=.env
      - --location=global
      - --keyring=jointcreative
      - --key=cloudbuild-env

  - name: "gcr.io/cloud-builders/docker"
    args: ["build", "-t", "gcr.io/$PROJECT_ID/$PROJECT_ID", "."]

  - name: "gcr.io/cloud-builders/docker"
    args: ["push", "gcr.io/$PROJECT_ID/$PROJECT_ID"]

  - name: "gcr.io/cloud-builders/npm"
    args: ["ci", "--production"]

  - name: 'gcr.io/cloud-builders/gcloud'
    args:
    - 'run'
    - 'deploy'
    - 'jointcreative'
    - '--image'
    - 'gcr.io/$PROJECT_ID/$PROJECT_ID'
    - '--region'
    - 'us-central1'
    - '--platform'
    - 'managed'

  - name: "gcr.io/$PROJECT_ID/firebase"
    args: ['deploy']

文件

FROM mhart/alpine-node:12


WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --production

FROM mhart/alpine-node:slim-12

WORKDIR /app
COPY --from=0 /app .
COPY . .

ENV PORT 8080
ENV HOST 0.0.0.0

EXPOSE 8080
CMD ["node", "__sapper__/build"]

错误日志在此处输入图片说明

您收到此错误的原因是您没有使用npm run build Sapper 应用程序。

几分钟前,我在 Github 上发布了一个将 Sapper 部署到 Cloud Run 的存储库,网址为https://github.com/mikenikles/sapper-on-cloud-run

我使用的Dockerfile基于 3 个阶段以最小化最终图像大小。

# This stage builds the sapper application.
FROM mhart/alpine-node:12 AS build-app
WORKDIR /app
COPY . .
RUN npm install --no-audit --unsafe-perm
RUN npm run build

# This stage installs the runtime dependencies.
FROM mhart/alpine-node:12 AS build-runtime
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci --production --unsafe-perm

# This stage only needs the compiled Sapper application
# and the runtime dependencies.
FROM mhart/alpine-node:slim-12
WORKDIR /app
COPY --from=build-app /app/__sapper__ ./__sapper__
COPY --from=build-app /app/static ./static
COPY --from=build-runtime /app/node_modules ./node_modules

EXPOSE 3000
CMD ["node", "__sapper__/build"]

我还建议使用以下.dockerignore文件只复制 Sapper 运行所需的内容:

/*
!/package.json
!/package-lock.json
!/rollup.config.js
!/src
!/static

在您的cloudbuild.yaml如果您计划公开公开服务,您可能需要考虑将以下内容添加到 Cloud Run 部署脚本中:

  - 'managed'
  - '--allow-unauthenticated'

看起来您错过了实际构建应用程序的步骤(可以放置到您的 cloudbuild/ci 脚本或 Dockerfile 中)。

Sapper 使用 Rollup 或 Webpack 来捆绑您的应用程序并将输出放置在__sapper__/build目录中。 Dockerfile 中的COPY步骤将此输出复制到最终容器中。

npm run build Docker 映像之前的某个时间,尝试将运行npm run build的步骤添加到您的进程中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM