Nodejs / Nuxt 3 Paketo Buildpacks:容器启动“启动失败:确定启动命令:当没有默认进程时需要命令”

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

我有一个基于 Nuxt / Vue.js 的应用程序(此处为示例代码),我已经使用 Cloud Native Buildpacks 为服务器端渲染模式构建了一个容器。我正在迁移到 Nuxt 3.x / Vue.js 3.x 并相应地将我的 Paketo 版本更新为更新的构建器映像:

pack build ghcr.io/jonashackt/microservice-ui-nuxt-js:latest \
              --builder paketobuildpacks/builder-jammy-base \
              --path .

遗憾的是,当我尝试使用以下命令成功构建后运行容器时(了解如何使用云原生构建包构建和运行基于 Nuxt 的容器请参阅此答案):

docker run --rm -i --tty --env "HOST=0.0.0.0" -p 3000:3000 ghcr.io/jonashackt/microservice-ui-nuxt-js

我收到以下错误:

ERROR: failed to launch: determine start command: when there is no default process a command is required

如何构建一个开箱即用的容器,或者 - 如果不可能 - 覆盖入口点或其他东西?

node.js docker vue.js nuxt.js buildpack
1个回答
0
投票

摘自这篇文章,在 Docker 中运行 Nuxt 3 采用以下

ENTRYPOINT
配置:
ENTRYPOINT ["node", ".output/server/index.mjs"]
。因此,应该很容易通过
docker run
命令覆盖它。但幸运的是,我偶然发现了 Paketo node.js 文档的部门,其中描述了如何在 Paketo 构建时指定自定义入口点

我们需要在这里利用

--env
参数
BP_LAUNCHPOINT
。我的工作
pack build
命令如下所示:

pack build ghcr.io/jonashackt/microservice-ui-nuxt-js:latest \
          --builder paketobuildpacks/builder-jammy-base \
          --env BP_LAUNCHPOINT=".output/server/index.mjs" \
          --path . 

使用该解决方案,正确的入口点将被烘焙到图像中,我们不需要在运行时对其进行处理。因此

docker run
命令保持不变:

docker run --rm -i --tty --env "HOST=0.0.0.0" -p 3000:3000 ghcr.io/jonashackt/microservice-ui-nuxt-js
© www.soinside.com 2019 - 2024. All rights reserved.