后台启动失败:[Error: ENOENT: no such file or directory, scandir '/app/plugins/xxx]

问题描述 投票:0回答:1

我有一个名为“inventory-backend”的插件。它包括 Knex 迁移文件夹“migrations”。在本地运行良好。

在这里,我完全按照 Backstage Docs 创建了一个 Docker 镜像(https://backstage.io/docs/deployment/k8s/https://backstage.io/docs/deployment/docker/)。这是我的 Dockerfile:

FROM node:18-bookworm-slim

RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
    --mount=type=cache,target=/var/lib/apt,sharing=locked \
    apt-get update && \
    apt-get install -y --no-install-recommends python3 g++ build-essential && \
    yarn config set python /usr/bin/python3

USER node

WORKDIR /app

ENV NODE_ENV production

COPY --chown=node:node yarn.lock package.json packages/backend/dist/skeleton.tar.gz ./
RUN tar xzf skeleton.tar.gz && rm skeleton.tar.gz

RUN --mount=type=cache,target=/home/node/.cache/yarn,sharing=locked,uid=1000,gid=1000 \
    yarn install --frozen-lockfile --production --network-timeout 300000

COPY --chown=node:node packages/backend/dist/bundle.tar.gz app-config*.yaml ./
RUN tar xzf bundle.tar.gz && rm bundle.tar.gz

CMD ["node", "packages/backend", "--config", "app-config.yaml"]

接下来,我将按照文档建议的方式再次部署 Postgre 和 Backstage。但是通过部署创建的 pod 出现此错误:

Backend failed to start up [Error: ENOENT: no such file or directory, scandir '/app/plugins/inventory-backend/migrations'] { errno: -2, code: 'ENOENT', syscall: 'scandir', path: '/app/plugins/inventory-backend/migrations' }

当我查看容器内部时,我没有看到“migrations”文件夹。所以我将这一行添加到 Dockerfile 中:

COPY plugins/inventory-backend/migrations /app/plugins/inventory-backend/migrations

现在,当我检查容器内部时,我看到迁移文件夹就在那里。但它给了我同样的错误。怎么会发生这种事?

谢谢你。

docker kubernetes minikube backstage
1个回答
0
投票

我在公司花了半年时间集成Backstage并创建了几个插件。

确保插件具有其所有依赖项,并且您也将所有者更改为节点:节点。

© www.soinside.com 2019 - 2024. All rights reserved.