【问题标题】:Sveltekit docker container error on startSveltekit docker 容器启动时出错
【发布时间】:2022-07-08 03:46:56
【问题描述】:

我正在尝试从我的 sveltekit 应用程序中获取一个 docker 容器。 我在我的 svelte.config.js 中使用节点适配器

import adapter from '@sveltejs/adapter-node'
adapter: adapter(),

我的 Dockerfile 看起来像这样。

FROM node:16-alpine

WORKDIR /app
COPY package*.json ./

RUN npm install
COPY . ./

RUN npm run build

EXPOSE 3000

CMD [ "node", "build" ]

启动容器时出现此错误:

node:internal/errors:464
2022-03-02T09:51:03.597044200Z     ErrorCaptureStackTrace(err);
2022-03-02T09:51:03.597088700Z     ^
2022-03-02T09:51:03.597100400Z 
2022-03-02T09:51:03.597116300Z Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/app/build/server/index.js' imported from /app/build/index.js
2022-03-02T09:51:03.597144200Z     at new NodeError (node:internal/errors:371:5)
2022-03-02T09:51:03.597193600Z     at finalizeResolution (node:internal/modules/esm/resolve:418:11)
2022-03-02T09:51:03.597270100Z     at moduleResolve (node:internal/modules/esm/resolve:981:10)
2022-03-02T09:51:03.597285100Z     at defaultResolve (node:internal/modules/esm/resolve:1078:11)
2022-03-02T09:51:03.597298100Z     at ESMLoader.resolve (node:internal/modules/esm/loader:530:30)
2022-03-02T09:51:03.597311100Z     at ESMLoader.getModuleJob (node:internal/modules/esm/loader:251:18)
2022-03-02T09:51:03.597324900Z     at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:79:40)
2022-03-02T09:51:03.597336000Z     at link (node:internal/modules/esm/module_job:78:36) {
2022-03-02T09:51:03.597345300Z   code: 'ERR_MODULE_NOT_FOUND'
2022-03-02T09:51:03.597359500Z }

【问题讨论】:

  • 你能发布你已经安装的@sveltejs/adapter-node 和@sveltejs/kit 的版本吗?您可能正在使用不兼容的版本。
  • 为什么COPY . ./RUN npm install 之后? (将“node_modules”添加到 .dockerignore)
  • 您找到解决方案了吗?我也面临同样的问题

标签: node.js docker svelte sveltekit


【解决方案1】:

您可以构建一个临时 docker 镜像,然后首先在该镜像中构建您的项目。之后,您可以使用先前的构建映像创建最终的生产 docker 映像。所以,dockerfile 应该如下所示。

FROM node:alpine as build
WORKDIR /my-project
COPY . .
RUN npm ci --development --silent

FROM node:alpine as prod
COPY ./package*.json ./
RUN npm ci --production --silent --ignore-scripts
COPY --from=build /my-project/build .
EXPOSE 3000
USER node
CMD ["node", "./build"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2020-07-03
    • 2016-11-12
    相关资源
    最近更新 更多