我想在Docker容器中运行nuxt3(使用docker compose)。
我的Dockerfile看起来像这样:
当我启动容器时,它会以这个错误退出:
对我来说,看起来似乎没有 .output 文件夹。但我不明白为什么以及如何调试这个问题。
你是对的。当我从我的docker-compose.yaml文件中删除卷时,它可以正常工作。 我使用以下命令启动我的应用程序:
为什么production.yaml没有覆盖docker-compose的volume条目?
我的Dockerfile看起来像这样:
FROM node:18.17.1-bullseye as build-stage
WORKDIR /app
COPY . .
RUN yarn install
RUN yarn build
FROM node:18.17.1-bullseye as production-stage
RUN mkdir /app
COPY --from=build-stage /app/.output /app/.output
ENTRYPOINT ["node", ".output/server/index.mjs"]
当我启动容器时,它会以这个错误退出:
node:internal/modules/cjs/loader:1080
throw err;
^
Error: Cannot find module '/app/.output/server/index.mjs'
at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
at Module._load (node:internal/modules/cjs/loader:922:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
Node.js v18.17.1
exited with code 0
对我来说,看起来似乎没有 .output 文件夹。但我不明白为什么以及如何调试这个问题。
EDIT: #docker-compose.yaml
version: '3'
services:
web:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
- /app/node_modules
environment:
- HOST=0.0.0.0
#production.yaml
version: '3.8'
services:
web:
restart: always
volumes: []
你是对的。当我从我的docker-compose.yaml文件中删除卷时,它可以正常工作。 我使用以下命令启动我的应用程序:
docker compose -f docker-compose.yaml -f production.yaml up --build
为什么production.yaml没有覆盖docker-compose的volume条目?