バックエンド開発のためのDockerによるNESTJSプロジェクトの設定
13818 ワード
NESTJSは、私たちのNodeJsのAPI開発のためのバックエンドのフレームワークは、現在のNODEJS +エクスプレスアプリケーションを設定することができますどのように迷惑を発見した後、かなりの間、それはあなたがTypesScriptのサポートをしたい場合、それは非常に多くの設定が必要です.
また、開発のためにDockerを実装することを信じています(そして、確実に、生産のために)、それは展開を非常に簡単にして、どんなサービスでも展開することができないので、私のバックエンドアプリケーションのすべてでものを持たなければなりません.
必要条件
このチュートリアルの主な焦点がDockerでNESTJSアプリ環境を走らせることになっているので、私はNESTJSかDockerにあまり深く行きません.私はNESTJSとDockerについて別々のシリーズを作ります.
完全に次のコードがどのように動作するかを理解するためには、次の科目の基本的な理解が必要です. 端末の操作 ジャバスクリプト Dockerの仕組み
始めましょう!
新しいNESTJSアプリケーションの作成
を使用して起動します.
私は選ぶつもりです
インストール終了後
新規APIサービスの作成
Dockerでそれをコンテナ化した後にAPIをテストするために使うことができるハードコードされた配列の映画を返す新しいAPIサービスを作成しましょう.
新しく作成したプロジェクトディレクトリをお気に入りのテキスト/コードエディタで開きますVisual Studio Code ).
ワークスペースは次のようになります.
そして、
ファイルを開く
次に、ファイルを開きます
最終的な結果は次のようになります.
これをDockerizeしましょう!
今私たちのバックエンドAPIアプリケーションを実行している、開発のためのDockerを使用してそれを格納しましょう.
プロジェクトのルートディレクトリに次のファイルを作成します. 開ける
Dockerコンテナの実行
私たちは私たちのDockerファイルを定義しているので、我々は単独でdockerに我々のアプリを実行することができます.
アプリケーションを起動するには、次のコマンドを端末で書きます.
そして、生産モードで我々のアプリを起動するには、それを推測…!次のコマンドを端末で実行します.
P . S :端末ログを溝に入れたい場合は、コンテナを別のデーモンに実行します
完了!
あなたは完全なソースコードを見つけることができますhere .
あなたがコメントで何を考えて、あなたが持っているかもしれないどんな質問でも遠慮なく私に知らせてください✌️
また、開発のためにDockerを実装することを信じています(そして、確実に、生産のために)、それは展開を非常に簡単にして、どんなサービスでも展開することができないので、私のバックエンドアプリケーションのすべてでものを持たなければなりません.
必要条件
このチュートリアルの主な焦点がDockerでNESTJSアプリ環境を走らせることになっているので、私はNESTJSかDockerにあまり深く行きません.私はNESTJSとDockerについて別々のシリーズを作ります.
完全に次のコードがどのように動作するかを理解するためには、次の科目の基本的な理解が必要です.
始めましょう!
新しいNESTJSアプリケーションの作成
を使用して起動します.
npm
マシンで新しいプロジェクトを作成します.$ npm i -g @nestjs/cli
$ nest new nestjs-docker
新しいプロジェクトを作るとき、NESTJSはあなたに尋ねるでしょうWhich package manager would you ❤️ to use?
私は選ぶつもりです
npm
このチュートリアルではyarn
あなたが本当にしたいならば.インストール終了後
cd
あなたの新しいアプリケーションディレクトリにアプリケーションを実行します.$ cd nestjs-docker
$ npm run start:dev
次に、アドレスを使用してブラウザで新しく作成されたアプリケーションを開きますhttp://localhost:3000 ためには、すべてがスムーズに実行を確認します.新規APIサービスの作成
Dockerでそれをコンテナ化した後にAPIをテストするために使うことができるハードコードされた配列の映画を返す新しいAPIサービスを作成しましょう.
新しく作成したプロジェクトディレクトリをお気に入りのテキスト/コードエディタで開きますVisual Studio Code ).
ワークスペースは次のようになります.
そして、
src
ディレクトリ.ここでは、我々の開発を開始するために、アプリケーションのソースファイルを見つけることができますファイルを開く
app.service.ts
ファイルの内容を次のコードに置き換えます.import { Injectable } from '@nestjs/common';
export interface Movie {
id: number;
name: string;
year: number;
}
@Injectable()
export class AppService {
private movies: Movie[] = [
{ id: 1, name: 'Star Wars: The Force Awakens', year: 2015 },
{ id: 2, name: 'Star Wars: The Last Jedi', year: 2017 },
{ id: 3, name: 'Star Wars: The Rise of Skywalker', year: 2019 },
];
getMovies(): Movie[] {
return this.movies;
}
}
注:移植性の高いモデルを追加します.Movie
) サービスクラスファイルには間違いなく良い練習ではありません.デモ目的のためだけです.あなたのアプリケーションのための別のモデルファイルを使用します.次に、ファイルを開きます
app.controller.ts
ファイルの内容を次のコードに置き換えます.import { Controller, Get } from '@nestjs/common';
import { AppService, Movie } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getMovies(): Movie[] {
return this.appService.getMovies();
}
}
プロジェクトを再び実行するnpm run start:dev
ブラウザでアプリを開くhttp://localhost:3000 または使用することができますPostman と新しいGET
よりフォーマットの意味のワークフローを要求します.最終的な結果は次のようになります.
これをDockerizeしましょう!
今私たちのバックエンドAPIアプリケーションを実行している、開発のためのDockerを使用してそれを格納しましょう.
プロジェクトのルートディレクトリに次のファイルを作成します.
Dockerfile
- このファイルはDocker画像のインポートに責任がありますdevelopment
and production
すべてのファイルをコピーしてインストールする環境npm
依存docker-compose.yml
- このファイルは、アプリケーションの他のサービス、ストレージボリューム、環境変数などのコンテナ、必要なイメージを定義する責任があります.Dockerfile
次のコードを追加します.FROM node:12.19.0-alpine3.9 AS development
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install glob rimraf
RUN npm install --only=development
COPY . .
RUN npm run build
FROM node:12.19.0-alpine3.9 as production
ARG NODE_ENV=production
ENV NODE_ENV=${NODE_ENV}
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install --only=production
COPY . .
COPY --from=development /usr/src/app/dist ./dist
CMD ["node", "dist/main"]
開けるdocker-compose.yml
ファイルを追加し、次のコードを追加しますversion: '3.8'
services:
dev:
container_name: nestjs_api_dev
image: nestjs-api-dev:1.0.0
build:
context: .
target: development
dockerfile: ./Dockerfile
command: npm run start:debug
ports:
- 3000:3000
- 9229:9229
networks:
- nesjs-network
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
restart: unless-stopped
prod:
container_name: nestjs_api_prod
image: nestjs-api-prod:1.0.0
build:
context: .
target: production
dockerfile: ./Dockerfile
command: npm run start:prod
ports:
- 3000:3000
- 9229:9229
networks:
- nesjs-network
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
restart: unless-stopped
networks:
nesjs-network:
Dockerコンテナの実行
私たちは私たちのDockerファイルを定義しているので、我々は単独でdockerに我々のアプリを実行することができます.
アプリケーションを起動するには、次のコマンドを端末で書きます.
docker-compose up dev
これは開発モードで起動します.私たちも私たちのファイルを保存するときに我々は変更を行うたびに再実行する必要はありませんファイルを保存する😍.そして、生産モードで我々のアプリを起動するには、それを推測…!次のコマンドを端末で実行します.
docker-compose up prod
メイクするGET
再び要求するhttp://localhost:3000 そしてベール!期待通りに動作するはずです.P . S :端末ログを溝に入れたい場合は、コンテナを別のデーモンに実行します
-d
フラグ:docker-compose up -d prod
完了!
あなたは完全なソースコードを見つけることができますhere .
あなたがコメントで何を考えて、あなたが持っているかもしれないどんな質問でも遠慮なく私に知らせてください✌️
Reference
この問題について(バックエンド開発のためのDockerによるNESTJSプロジェクトの設定), 我々は、より多くの情報をここで見つけました https://dev.to/erezhod/setting-up-a-nestjs-project-with-docker-for-back-end-development-30lgテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol