브렌쏭의 Veritas_Garage

Docker 본문

[Project_하다]/[Project_공부]

Docker

브렌쏭 2022. 3. 23. 17:30
적절한 수준의 가상머신

도커, 도커 허브는 npm과 npmjs 같은 것이라 생각하면 된다.

컴퓨팅성능의 상승으로 인해, 가장 빛을 본 녀석들 중 하나가 가상머신 아닐까? 이제는 앵간한 것들은 vm으로 대충 다 때워버려도 괜찮은 수준이니 말이다.

심지어 도커끼리 컴포즈 하면 포트포워딩도 신경쓸 필요가 없다. 도커끼리는 포트를 신경 쓸 필요없이 내부망으로 인식하고, 외부로 나가는 포트도  docker-compose.yaml 파일에서 죄다 지정해버리고 묶어버릴 수 있기 때문에 매우 편리해진다.

version: "3.7"

services:
  my_backend:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 1000:3000

  my_database:
    build:
      context: .
      dockerfile: Dockerfile.mongo
    ports:
      - 1001:27017

docker-compose.yaml 의 예시. 위의 경우 서비스 my_backend 와 my_database 를 버전 3.7의 도커로 컴포즈 하겠다는 것이다.

들여쓰기의 수준으로 부모/자식이 지정되므로 잘 보면서 해두자.

잘 보면 각각의 도커파일을 지정하게 되어있고 포트 항목이 있는데, 도커파일은 빌드하게 될 파일이고, 포트의 경우는 도커 외부와 통신할 포트포워딩 항목이다.

docker-compose build // 지정한 도커파일을 다 빌드한다
docker-compose up // 지정한 도커파일을 다 실행한다

그 외에는 내용을 바꿨다면 컨테이너를 꼭 지운뒤 다시 빌드하라는거 정도? 근데 이거 드럽게 귀찮다.

따라서 볼륨을 지정해서 변경되는 사항을 실시간으로 반영할 수 있도록 해야한다.

services:
  my_backend:
    build:
      context: .
      dockerfile: dockerfile
    volumes:
      - ./index.js:/my_backend/index.js
      - 로컬안파일경로:도커안파일경로
    ports:
      - 3000:3000

로컬 파일 위치와 도커내부 경로를 맞춘다.

그리고 도커 안에서도 node 대신,  nodemon으로 index.js를 실행시킨다. (dockerfile 에서 지정)

Comments