Docker #4. Docker Compose를 실습해 보자!
Prog. Langs & Tools/Docker

Docker #4. Docker Compose를 실습해 보자!

이번에는 실습을 해보는 포스팅을 해 보려고 한다. 참고로 이 실습은 유데미에서 내가 듣고 있는 도커 강의에서 다루었던 실습이다.

https://www.udemy.com/course/docker-mastery/

이 강의에서 도커 컴포즈 파일 관련해서 다루었던 실습을 정리해 보려 한다. 

 

이번 실습의 목표는 Drupal에서 새로운 소프트웨어가 나왔는데 이 새로운 기능들이 제대로 잘 작동하는지 도커로 커스텀 이미지를 빌드해서 테스트를 해보는 것이다. 아주 간단하고 빠르게 말이다. 여기서 도커 컴포즈 파일을 사용해야 한다. 나는 이전 과제에서 drupal 웹사이트를 도커로 띄우는 과제를 하나 했었고, 여기에서 이어서 진행한다.

빈 디렉토리에 Dockerfile을 하나 만든다.

이 도커파일에 대해서 설명을 하면, 먼저 drupal:8.8.2를 가지고 와서 커스텀 파일을 만든다. 그리고 나서 RUN 명령어를 통해 git을 설치한다. 참고로 -y 옵션은 자동으로 YES를 응답하는 옵션이다. 이 때 apt가 설치된 후에 git에서 필요없는 캐시 데이터를 지워주어야 한다.

작업 경로를 theme으로 바꾼다. 우리가 작업할 내용이 이 디렉토리에 있기 때문이다. 그 다음에 RUN 명령어를 통해 우리가 테스트 하려는  theme 기능을 git clone 한다. 여기에서 주목해야 할 부분이 있다. 우리가 해당 파일을 변경하는 것을 시도하지만, 다른 이미지 레이어는 변경하고 싶지는 않다.  drupal 컨테이너는 www-data user가 실행하지만, 빌드는 root user가 실행한다. 그래서 chown 명령어를 사용하여 파일 소유자를 적절한 유저로 바꾸어 주어야 한다. 그리고 나서 다시 원래 작업경로로 돌아온다.

Dockerfile과 같은 위치에 docker-compose.yml 파일도 만들어 준다.

컴포즈 파일은 drupal 서비스의 커스텀 이미지를 만들기 위해서 만들어 준다. 이미지 이름은 새로운 이미지를 만들기 위해 새로 바꾸어 준다. 해당 디렉토리 안에서 Dockerfile이 실행이 되기를 원하기 때문에 drupal에 build: . 을 추가해 준다. 참고로 볼륨 설정같은 부분은 Docker Hub의 해당 이미지 공식 문서 등을 참고해서 설정해 주었다.

postgres 서비스의 경우 drupal-data 볼륨을 추가해 주었는데, 그 이유는 도커 컴포즈가 재시작 하더라도 데이터를 보호해 주기 위함이다. 지난 포스팅 참고

이렇게 Dockerfile과 docker-compose.yml을 만들고 나서 도커 컴포즈를 실행하면 다음과 같다. 

여기서 localhost:8080 포트로 들어가면 Bootstrap이 적용된 페이지가 나온다. 원래 처음에 여러 단계가 더 있는데, 필자는 예전에 이미 지나온 부분이어서 바로 부트스트랩이 적용된 페이지가 나왔다.

Ctrl+C 로 멈추고 docker-compose down을 한 뒤에 다시 docker-compose up을 해도 컨테이너는 지워졌지만, 데이터는 지워져 있지 않아서 모든 것이 원래 모습대로 있는 것을 발견할 수가 있다.

이번 실습에서 간단하게 도커 컴포즈를 만들어 보는 과제를 해 보았다. 다음번에 더 유익한 실습을 가져와서 포스팅을 해 보도록 하려고 한다.