Node.js - Docker Compose Volumnes

Temporary·2024년 7월 16일
0

Nods.js

목록 보기
16/39

Docker-compose의 volumes

지금은 로컬의 index.js 파일을 변경하여도 docker내의 파일은 변경되지 않는다.

  1. 로컬에서 소스코드 변경하면, docker 내에도 적용
  2. docker 내에서 nodemon으로 실행

위의 두가지 모두 적용해야 도커내에서도 매번 build를 하지 않고 변경된 소스코드를 적용할 수 있다.

이미 nodemon으로 실행시키는 것은 적용된 상태다. 그렇기에 1번 과정만 추가하면 된다.

그렇다면 1번 과정은 어떻게 추가할 수 있을까? 이를 위해 Volumns 가 필요하다.

먼저, 04-06-docker-compose-with-mongoose-board 폴더를 복사고 이름을 04-07-docker-compose-with-mongoose-board2 로 변경한다.

backenddocker-compose.yaml 파일에 volumes를 추가해 준다.

version: '3.7'

# 컴퓨터들
services:

  # 컴퓨터이름
  my-backend:
    build:
      context: .
      dockerfile: Dockerfile
    volumes: # 추가된 부분
      - ./index.js:/myfolder/index.js
      - ./email.js:/myfolder/email.js
    ports:
      - 4000:4000


  # 컴퓨터이름
  my-database:
    image: mongo:5
    ports:
      - 27017:27017

volumes: ./index.js : /myfolder/index.js
위가 의미하는 것은 현재 위치의 index.js 파일을 docker 컴퓨터 내부의 myfolder 안의 index.js 와 연동해준다는 것을 의미한다.

volumes를 통해 로컬의 소스코드와 도커내의 소스코드를 공유할 수 있다.

mongoose의 debug

db에 저장할 때, ODM 명령어가 아니라 실제 변경된 db의 명령어를 확인하고 싶을 때가 있다.

이때, debug 모드가 필요하다. 이를 사용하면 실제 mongoDB의 명령어가 어떻게 오가는지 확인할 수 있다.

mongoose에 대한 로그를 보기 위해서는 index.js파일에 아래 내용을 추가해야 한다.

// index.js

// 생략...

mongoose.set("debug", true) // debug가 추가된 부분

// 몽고DB 접속!!
mongoose.connect("mongodb://my-database:27017/mydocker10")
  .then(() => console.log("db 접속에 성공하였습니다."))
  .catch(() => console.log("db 접속에 실패하였습니다."))

app.listen(4000, () => {
  console.log("백엔드 API 서버가 켜졌어요!!!")
})

로그를 통해 DB에 저장되는 query문을 확인할 수 있다.

profile
Temporary Acoount

0개의 댓글