- Published on
nestjs + postgresql + devcontainerで環境を作る
- 著者
- 名前
- 平原典彦
nestjs+postgresql+devcontainerで環境を作りたいと思います。
ディレクトリはこのような感じです。
src
は nestjs
のコードが入っています。├── .devcontainer/
│ └── devcontainer.json
├── node_modules/
├── src/
├── .dockerignore
├── docker-compose.yml
├── Dockerfile
└── package.json
dockerの準備
まずは普通にdockerが動作するようにします。
Dockerfile
ARG NODE_VER FROM node:${NODE_VER} ENV NODE_ENV development RUN npm update -g npm RUN npm i -g @nestjs/cli USER node WORKDIR /usr/src/app COPY ./ ./ RUN npm install EXPOSE 3000 CMD [ "npm", "run", "start:dev" ]
USER node
を指定しないと権限の問題で node_modules
のディレクトリが生成されません。docker-compose.yml
services: node: build: args: - NODE_VER=20.17.0 context: . dockerfile: Dockerfile environment: TZ: 'Asia/Tokyo' ports: - '3000:3000' tty: true volumes: - ./:/usr/src/app - ./node_modules:/usr/src/app/node_modules depends_on: - db db: image: postgres:14 container_name: db volumes: - db-data:/var/lib/postgresql ports: - '5432:5432' environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: password volumes: db-data: node_modules:
.dockerignore
node_modules
これで一度
問題なく動作したら次に
docker compose up --build
を実行してください。問題なく動作したら次に
.devcontainer
を準備します。devcontainer
.devcontainer/devcontainer.json
{ "name": "nestjs", "dockerComposeFile": "../docker-compose.yml", "service": "node", "workspaceFolder": "/usr/src/app" }
これでエディタを再起動すればコンテナが自動起動するはずです。