[Docker] Docker-compose

무1민·2023년 8월 26일
0

infra

목록 보기
1/14

Docker-compose란?

여러 개의 컨테이너로부터 이루어진 서비스를 구축, 실행하는 순서를 자동으로 하여, 관리를 간단히하는 기능이다.

compose파일을 준비하여 커맨드를 1회 실행하는 것으로, 그 파일로부터 설정을 읽어들여 모든 컨테이너 서비스를 실행시키는 것이 가능하다.

Docker-compose 사용법

docker-compose를 사용하기 위해서는, 세 가지 순서가 이루어져야 한다.

  • 각각의 컨테이너의 Dockerfile을 작성한다.(기존에 있는 이미지를 사용하는 경우는 불필요)
  • docker-compose.yml을 작성하고, 각각 독립된 컨테이너의 실행 정의를 실시한다.
  • "docker-compose up" 커맨드를 실행하여 docker-compose.yml으로 정의한 컨테이너를 개시한다.
  • "docker-compose down" 커맨드를 실행하여 docker-compose.yml로 실행한 컨테이너를 전부 stop하고 삭제할 수 있다.

docker-compose.yml

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:

여러 개의 컨테이너로 부터 만들어진 서비스를 조감하여 보는 것도 가능해져, 보존성의 수고를 가볍게 한다.

Docker compose 설치

apt install docker-compose

설치가 완료되면, docker-compose 커맨드를 실행하여 동작을 확인해보자.

docker-compose --version

Jenkins docker 컨테이너 안에서 docker-compose 명령어 쓰기

보통 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
profile
야호

0개의 댓글