여러 개의 컨테이너로부터 이루어진 서비스를 구축, 실행하는 순서를 자동으로 하여, 관리를 간단히하는 기능이다.
compose파일을 준비하여 커맨드를 1회 실행하는 것으로, 그 파일로부터 설정을 읽어들여 모든 컨테이너 서비스를 실행시키는 것이 가능하다.
docker-compose를 사용하기 위해서는, 세 가지 순서가 이루어져야 한다.
- 각각의 컨테이너의 Dockerfile을 작성한다.(기존에 있는 이미지를 사용하는 경우는 불필요)
- docker-compose.yml을 작성하고, 각각 독립된 컨테이너의 실행 정의를 실시한다.
- "docker-compose up" 커맨드를 실행하여 docker-compose.yml으로 정의한 컨테이너를 개시한다.
- "docker-compose down" 커맨드를 실행하여 docker-compose.yml로 실행한 컨테이너를 전부 stop하고 삭제할 수 있다.
yaml파일로 Docker 컨테이너에 관한 실행 옵션(build 옵션도 포함되어 있는 경우도 있다.)를 기재한 파일이 된다.
version: "3" services: jenkins: build: context: . dockerfile: dockerfiles/Dockerfile.jenkins ports: - "8080:8080" - "50000:50000" volumes: - jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock user: root networks: - portfolio react-app: build: context: . dockerfile: dockerfiles/Dockerfile.react ports: - "80:80" networks: portfolio: driver: bridge volumes: jenkins_home:
여러 개의 컨테이너로 부터 만들어진 서비스를 조감하여 보는 것도 가능해져, 보존성의 수고를 가볍게 한다.
apt install docker-compose
설치가 완료되면, docker-compose 커맨드를 실행하여 동작을 확인해보자.
docker-compose --version
보통 Jenkins를 docker 컨테이너 상에 띄우고 shell script에서 docker-compose 명령어를 수행할 것이다.
이런 경우 host 시스템에 docker compose를 install 하는 것이 아니라, jenkins 컨테이너 안으로 들어가서 docker compose를 설치하도록 하자.
#먼저 Jenkins 컨테이너의 container id 확인
docker ps
//컨테이너 안에 접속
docker exec -it [Jenkins container ID] /bin/bash
//docker-compose 설치
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
//설치 확인
docker-compose --version