Steady Mind For My Life

https://github.com/jongseok3910/Spring-Study

Docker

도커 컴포즈

함탕 2024. 6. 15. 19:24
728x90
728x90

예를들어 mysql, nginx 등 여러컨테이너를 생성하려면 일일이 run~명령어를 작성해야한다.

한 두개정도 컨테이너를 생성하는 거라면 상관이 없는데 만약 100개의 컨테이너를 생성해야 한다면?


100개의 컨테이너를 run~명령어로 작성하려면 시간도 오래 걸리고, 번거로운 작업이 많기 때문에 개발에 온전히 집중할 수 없다. 여러개의 컨테이너를 생설 할 시 도커 컴포즈를 사용한다.

도커 컴포즈 파일은 yaml(야믈)파일로 생성한다.

야믈(YAML)이란?

xml과 json과 같이 포맷에 대한 약속
텍스트구조로 되어있고해당 프로그래밍 언어의 라이브러리 포함시킬 수 있다.
야믈코드는 들여쓰기를 통해 계층을 나누며
공백 수로 블록을 구분한다.
그래서 공백 맞추기에 민감해야한다.

 

나도 yaml파일을 작성하고 나서 오류가 생겼기에

확인해 보니 단락이 안맞아서 생기는 오류가 있었다.

들여쓰기나 공백 꼭 확인하기!

 

도커 컴포즈 사용하기

1. 컴포즈파일 생성

아래 사진은 vi docker-compose.yaml 명령으로 만든 파일의 내용이다.

나는 큐브리드DB 설치를 위한 내용을 작성했다.

설계상 가장 먼저 실행되어야 하는 애플리케이션을 먼저 작성하고
이와 의존성을 갖는 데이터베이스 및 하위 애플리케이션을 작성한다.

 

첫번째 컨테이너 네임은 cubroker로 큐브리드DB의 브로커에 대한 컨테이너를 정의했다.

(broker는 오라클의 리스너와 같은 역할을 한다)

두번째 컨네이너 네임은 cubserver로 큐브리드DB의 서버에 대한 컨테이너를 정의했다.

 

좀더 세부적인 설명을 하자면

version: 도커 엔진 릴리스에 맞는 컴포즈 버전을 적는다.(ex: 도커엔진릴리스 1.10.0버전이라서  컴포즈 버전 2 )
services: 서비스에 대한 정의
environmnet: 환경변수 설정
networks: 네트워크 설정, 옵션 지정하지 않으면 네트워크가 자동생성.

depends_on: 먼저 실행해야 하는 서비스를 지정하여 순서 지정, 이 옵션에 지정된 서비스가 먼저 시작됨

(아래 사진에서는 depends_on에 cubeserver가 지정되어있으니 서버가 먼저 시작되고 그다음 broker가 시작된다.)

 

 

2. 컴포즈 파일 실행 및 확인

docker-compose up 명령어를 입력하면

yaml파일에 정의된 내용을 토대로 컨테이너가 생성된다.

 

docker-compose ps -a 명령어로 프로세스 확인을 해 보면

yaml파일에 정의했던 cubbroker, cubserver 컨테이너가 잘 생성된것을 확인 할 수 있다.

 

docker exec -it 컨테이너번호 /bin/bash 명령어로 큐브리드 컨테이너에 접속.

csql -u 사용자 DB명 명령어로 큐브리드DB 정상 작동 까지 확인했다.

 

728x90
300x250

'Docker' 카테고리의 다른 글

도커 - DockerFile을 이용한 이미지 생성 및 이미지 배포(commit, push)  (0) 2024.06.08
도커 컨테이너 정리  (0) 2024.05.26
볼륨(volume)  (0) 2024.05.24
도커 명령어 정리  (0) 2024.05.24
도커 정리  (0) 2024.05.22