모험가

Docker Compose 본문

도커

Docker Compose

라리음 2022. 6. 1. 22:32

 

 

 

Dokcer Compose

 

- Docker Compose는 다중 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구임.

 

 

 

 

 

 

 

 

 

실습

 

 

 

1. 파일 (node-compose-app) 만들기.

2. npm init으로 package.json파일 만들기.

3. package.json 파일에 main 내용과 scripts에 start = "node server.js" 추가!

4. dependencies 추가!

 

 

 

Redis란?

- Redis(Remote Dictionary Server)는 메모리 기반의 키-값 구조 데이터 관리시스템이며,

  모든 데이터를 메모리에 저장하고 빠르게 조회할 수 있는 비관계형 데이터베이스(NoSQL)이다.

 

Redis를 쓰는 이유?

- 메모리에 저장을 하기 떄문에 MySQL같은 데이터베이스에 데이터를 저장하는 것과 데이터를 불러올 때 훨씬

  빠르게 처리할 수 있으며, 비록 메모리에 저장하지만 영속적으로도 보관이 가능함.

  그래서 서버를 재부팅해도 데이터를 유지할 수 있는 장점이 있다.

 

 

 

 

 

 

Node.js 환경에서 Redis 사용 방법

 

- 먼저 redis-server를 작동시켜야 함

- 그리고 redis 모듈을 다운받아야 함

- 레디스 모듈을 받은 후 레디스 클라이언트를 생성하기 위해서 Redis에서 제공하는 createClient( ) 함수를 이용해서

  redis.createClient로 레디스 클라이언트를 생성

- 하지만 여기서 redis server가 작동하는 곳과 Node.js 앱이 작동하는 곳이 다른 곳이라면 host 인자와 port 인자를 명시 해야함

 

 

 

 

ex)

만약 Redis 서버가 작동하는 곳이 redis-server.com이라면 Host옵션을 위에 처럼 하면 됨.

그리고 레디스의 기본 포트는 6379임.

 

 

 

도커 환경에서 레디스 클라이언트 생성 시 주의사항

 

- 도커 Compose를 사용할 때는 host 옵션을 docker-compose.yml 파일에 명시한 컨테이너 이름으로 주면 됨.

 

 

 

 

우리는 도커로 하기에 server.js 작성

 

 

 

 

 

 

server.js에 app 부분을 추가!

 

 

 

 

 

Dockerfile 작성

 

 

도커 빌드를 하면 노드 JS가 레디스 서버에 접근을 할 수 없는데

 

그때 멀티 컨테이너 상황에서 쉽게 네트워크를 연결시켜주기 위해서 Docker Compose를 이용함!!

 

 

 

 

 

 

 

 

 

 

 

docker-compose.yml 작성

 

 

 

version : 도커 컴포즈의 버전

services : 이곳에 실행하려는 컨테이너들을 정의

redis-server : 컨테이너 이름

image : 컨테이너에서 사용하는 이미지

node-app : 컨테이너 이름

build : 현 디렉토리에 있는 Docerfile

ports : 포트 맵핑 로컬 포트 : 컨테이너 포트

 

 

 

 

 

docker-compose up으로 배포!!

 

docker compose -d up (백그라운드에서 실행)

 

 

 

 

 

 

 

docker-compose up     vs       docker compose up --build

 

 

docker-compose up : 이미지가 없을 때 이미지를 빌드하고 컨테이너 시작

docker-compose up --build : 이지미가 있든 없든 이미지를 빌드하고 컨테이너 시작

 

 

 

 

 

 

 

 

 

 

끄고 싶을때는 docker-compose down!!