簡體   English   中英

如何將 docker 與 NestjS 應用程序一起使用

[英]How to use docker with NestjS apps

我有一個包含許多應用程序的 NestJS 項目,結構如下:

my-project:
-- apps;
--- app-one
---- src
---- tsconfig.app.json
--- app-two
---- src
---- tsconfig.app.json
-- libs
-- package.json
-- etc...

我在一個項目中有兩個應用程序: app-oneapp-two ,如何使用 docker 部署app-oneapp-two 當我有一個知道如何執行此操作的應用程序時,我將在package.json目錄中創建Dockerfile並構建/運行,但是如何使用嵌套應用程序執行此操作?

謝謝你的幫助

您可以在根目錄下擁有多個具有不同文件名的 Dockerfile。

my-project:
-- apps;
--- app-one
---- src
---- tsconfig.app.json
--- app-two
---- src
---- tsconfig.app.json
-- libs
-- package.json
-- Dockerfile.app-one
-- Dockerfile.app-two

對於 Dockerfiles,您只需要運行您的自定義腳本來構建指定的應用程序

Dockerfile.app-one

FROM node:12.17-alpine as builder

WORKDIR /build
COPY package.json yarn.lock ./
RUN yarn

COPY . .
RUN  yarn build:app-one

EXPOSE 3000

CMD [ "yarn", "start:app-one"]

package.json

"scripts": {
  "build:app-one": "nest build app-one",
  "build:app-two": "nest build app-two",
  "start:app-one": "nest start app-one",
  "start:app-two": "nest start app-two",
}

nest-cli.json

{
  "projects": {
    "app-one": {
      "type": "application",
      "root": "apps/app-one",
      "entryFile": "main",
      "sourceRoot": "apps/app-one/src",
      "compilerOptions": {
        "tsConfigPath": "apps/app-one/tsconfig.app.json",
        "assets": []
      }
    },
    "app-two": {
      "type": "application",
      "root": "apps/app-two",
      "entryFile": "main",
      "sourceRoot": "apps/app-two/src",
      "compilerOptions": {
        "tsConfigPath": "apps/app-two/tsconfig.app.json",
        "assets": []
      }
    },
  }
}

然后,在 CI/CD 的構建/部署任務中指定文件名

.gitlab-ci.yml

image: docker:git

services:
  - docker:dind

stages:
  - build

build-app-one:
  stage: build
  script:
    - docker build . -f Dockerfile.app-one

build-app-two:
  stage: build
  script:
    - docker build . -f Dockerfile.app-two

如果您需要更多信息,請閱讀 NestJS 中有關monorepo 架構的文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM