如何在nx monorepo中对nestjs应用进行docker化

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

我正在开发 Nx monorepo,里面有几个项目。 现在,我需要对我的 Nestjs 应用程序进行 dockerize。

我不确定如何在“后端”文件夹(我的 Nestjs 应用程序)中创建 Docker 文件,以按预期执行。

通常我使用以下命令启动应用程序:

yarn run nx backend:serve
但这在docker上不起作用。它说的是
command nx backend:serve is not found

我的 dockerfile 看起来像这样:

FROM node:20.9.0-alpine3.18

WORKDIR /src

RUN npm add --global nx@latest

# Copy package.json and package-lock.json from the root of the build context
COPY package*.json ./

# Install dependencies
RUN yarn  

# Expose the port the app runs on
EXPOSE 3000

# Command to run the application
CMD [ "yarn", "run","nx backend:serve" ]
docker nest nx-monorepo
1个回答
0
投票

我目前正在开发 NX Nestjs,这是我的 Dockerfile,这可能不是最好的,但它有效。我使用 pm2 来启动应用程序。请记住将

yourNestAppName
更改为您想要的应用程序名称和端口。

Dockerfile(/apps/应用程序名称/Dockerfile)

# build
FROM node:lts-alpine AS builder

WORKDIR /usr/src/app
COPY package*.json ./

RUN npm install --only=development --silent

COPY . .

RUN npx nx run yourNestAppName:build:production

# Production image
FROM node:lts-alpine
ENV NODE_ENV production

WORKDIR /usr/src/app
COPY package*.json ./

RUN npm install -g pm2@latest
RUN npm install --only=production --silent

COPY --from=builder /usr/src/app/dist/apps/yourNestAppName ./build

ENTRYPOINT ["pm2-runtime","build/main.js"]

还有 docker-compose.yml (在文件夹中)

services:
  api:
    container_name: api
    restart: always
    ports:
      - "3001:3001"
    build:
      context: .
      dockerfile: ./apps/api/Dockerfile
    environment:
      - NODE_ENV=production
      - PORT=3001
    expose:
      - 3001
© www.soinside.com 2019 - 2024. All rights reserved.