티스토리 뷰

docker-compose는 조금 더 docker를 편하게 사용할수 있도록 해주는 도구이다. Docker 플러그인 같은 개념이라고 생각하면 이해가 편하다. 근데 뭘 조금 더 편하게 해줄까? docker에서 수행되는 일련의 작업(eg. build, run, network, volume..)을 docker-compose.yml 파일을 통해서 한방에 하게 해준다. docker-compose.yml 파일은 docker로 할 일에 대한 작업기술서 같은 것이라고 보면 된다. 예를들면 a라는 image를 빌드하고 빌드한 image를 실행하고 b라는 image도 network, volume 등을 설정하여 실행을 시키고 싶을때 기존에 각각 docker 명령어로 수행했어야 했던 일을 docker-compose를 통해 한방에 할 수가 있다. 

이해를 돕기 위해 WordPress 를 docker-compose를 통해 설치 및 기동을 해보자. 

 

docker-compose 설치

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

docker-compose 명령어를 사용하기 위해 위와 같이 설치 및 권한을 준다. 이렇게 설치를 한다고 해도 docker-compose 명령어는 docker-compose.yml 파일이 있는 곳에서만 사용이 가능하다. 

 

docker-compose.yml 파일 작성

일단 적당한 폴더 하나를 만든다. 이곳으로 이동하여 docker-compose.yml 파일을 만든다.

그리고 Docker Hub에서 WordPress 를 찾아서 제공하는 docker-compose.yml 을 찾아서 이것을 내가 만든 docker-compose.yml 파일에 넣어준다. 

 

docker-compose.yml (wordpress)

version: '3.3'                                   # docker-compose version 명시

services:                                        # 서비스 정의. 이 아래로 한 세트라는 뜻
   db:                                           # Container
     image: mysql:5.7                            # Container 올릴때 사용할 image
     volumes:                                    # 어디에 설치할지
       - db_data:/var/lib/mysql
     restart: always                             # Container를 종료하기 전까지 항상 재시작
     environment:                                # 환경변수
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:                                 # Container 간 종속 설정
       - db
     image: wordpress:latest
     ports:                                      # 포트설정
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

이렇게 파일의 내용을 채워넣고 저장한다. 

 

docker-compose 실행

$ docker-compose up      #foreground 실행
$ docker-compose up -d   #background 실행

wordpress의 docker-compose.yml 파일이 있는 곳에서 위와 같은 명령어를 실행한다. docker-compose updocker-compose에서 가장 많이 사용되는 명령어이다. 역할은 Container 생성 및 실행 명령이다.

아주 간단하다. 기다리면 mysql, wordpress가 설치가 되며 기동이 된다. 

 

 

docker-compose 실행 확인

$ docker-compose ps
$ docker-compose ps --services            # 실제 서비스명 확인할때 

명령어를 실행시키면 이렇게 mysql과 wordpress가 설치가 된것을 확인할 수 있다. 위에 명시된대로 8000포트를 통해 브라우저에서 확인을 해보자. 

 

끝났다. Docker Hub에서 docker-compose.yml 파일만 구해서 넣고 docker-compose up 만 했다. 간단하다. 


docker-compose 명령어

위에서 docker-compose up, docker-compose ps 정도 사용을 했다. 기본적으로 docker 명령어와 거의 유사하다. 

그 외의 것들에 대해서 알아보자. 

 

down : 종료 (시작인 up 과 반대, 중지 및 Container 삭제)

$ docker-compose down

start : 중지되어 있는 Container 시작 

$ docker-compose start

stop : 시작되어 있는 Container 중지

$ docker-compose stop

restart : Container 재시작

$ docker-compose restart

build 

$ docker-compose build

logs : logging 을 할때 사용. 보통 -f 옵션을 붙여서 사용

$ docker-compose logs

 

 

이정도만 알면 충분히 docker-compose 를 유용하게 사용할 수 있지 않을까 싶다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30