【发布时间】:2022-09-26 14:25:52
【问题描述】:
我正在尝试对 nestjs 应用程序进行 dockerize 处理。我必须使用我们的 devops 的方法,所以我不能提供所有的配置细节。 package.json 中的脚本对于任何 nestjs 应用程序都是典型的。 我有 Dockerfile.backend:
FROM some.registry.net/docker/node16 as builder
WORKDIR /opt/app
COPY --chown=app:app ./nestjs/nest-project .
RUN yarn install --non-interactive --production --frozen-lockfile
FROM some.registry.net/docker/node16 as serve
WORKDIR /opt/app
ENV NODE_ENV=production
ENV APP_CONFIG=/opt/app/config/config.yaml
COPY --chown=app:app ./build/Procfile /opt/startup/Procfile
COPY --chown=app:app ./build/config.yaml ./config/config.yaml
COPY --chown=app:app --from=builder /opt/app/ ./
COPY --chown=app:app --from=builder /opt/app/node_modules ./node_modules
USER root
##RUN npm install pm2 -g
##RUN npm install -g nodemon
RUN npm run build
CMD [\"/opt/startup/entrypoint.sh\"]
我有 docker-compose.yml 文件:
version: \"2\"
services:
backend:
build:
context: .
dockerfile: ./build/Dockerfile.backend
command: npm run start
##volumes:
##- ./nestjs/nest-project:/app
##- /app/node_modules
ports:
- 4001:4001
- 9229:9229
environment:
- NODE_ENV=development
- PORT=4001
- REACT_APP_PROD=0
- REACT_APP_BACKEND_URL=http://127.0.0.1:4001
- FRONTEND_URL=http://localhost:4000
- APP_CONFIG=/opt/app/config/config.yaml
frontend:
build: ./frontend
command: npm start
##volumes:
##- ./frontend:/app
##- /app/node_modules
environment:
- NODE_ENV=development
- DISABLE_ESLINT_PLUGIN=true
- REACT_APP_BACKEND_URL=http://127.0.0.1:4001/backend
- PORT=4000
- REACT_APP_PROD=0
ports:
- 4000:4000
所以最有趣的地方在于后端命令部分。我只能使用 npm run start:dev 命令启动容器。当我进入npm start 或npm run start:prod
容器执行(我在日志中看到nestjs应用程序启动,成功连接到数据库)并退出而没有任何错误。我尝试了node dist/main 并得到了相同的结果。我尝试了使用nodemon dist/main nodemon 的nodemon,即使使用详细标志显示红线类似于app crashed... 并且没有提供更多信息。我用这个命令pm2 --name nestjs start npm -- start pm2 成功启动了 pm2,并且容器在没有任何信息的情况下退出。
到目前为止,我发现问题出在我的配置中,但我不知道去哪里寻找。提前致谢。
标签: node.js docker docker-compose nestjs