[Docker] 도커 컴포즈
도커파일같은 것으로 우리가 사용할 나만의 이미지를 만들고 나면, 당연히 컨테이너를 올려서 작동할 수 있게 한다.
하지만 기존의 단순한 컨테이너 관리 방식은 불편한 점이 많다.
가령, 내가 만든 간단한 서버를 올리는 명령은 다음과 같다.
포트 같은 옵션값도 옵션값이지만 환경변수도 줄줄이 지저분하게 달리는 것을 볼 수 있다.
사용 자체에는 문제가 없지만 역시 불편하고, 설정값이 늘어나면 늘어날수록 관리하기가 조잡해지는 방식이다.
도커 컴포즈는 저런 자잘한 설정값들을 관리할 수 있게 해주는 보조 도구다.
설치 (Linux)
도커 컴포즈는 다음과 같이 설치할 수 있다.
curl로 받고 권한만 주면 된다.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
그렇게 해서 다음과 같이 실행이 되면 잘 깔린 것이다.

도커 컴포즈 파일
도커 이미지를 빌드할때 도커파일이 있는 것처럼, 도커컴포즈용으로 또 docker-compose.yml이라는 특수한 파일을 작성해줘야 한다.
헝태는 대략 다음과 같다.
service 내에 앱은 여러개를 동시에 둬서 관리할 수 있고,
앱 안에는 사용할 이미지, 도커파일 경로, 포트, 환경변수 등의 값을 기존에 사용하던 것과 동일하게 넣어준다.
앱 배포
도커 컴포즈를 사용하는 방법은 간단하다.
도커 컴포즈 파일이 있는 위치에서 docker-compose up을 실행해주면 된다.
그러면 이렇게 잘 실행이 될 것이다.
다만 이렇게 하면 포그라운드 모드라, 내가 쉘을 끄면 같이 죽는다.
기존처럼 백그라운드에 컨테이너를 올리고 싶다면 -d 옵션을 주면 된다.

앱 정지&재시작
정지와 재시작은 각각 stop과 start 명령으로 수행할 수 있다.
stop은 docker stop과 동일한 것 같다.

앱 삭제 (down)
아예 중단을 하려면 down으로 컨테이너를 없애버릴 수 있다. 컨테이너, 네트워크를 전부 지우고, 볼륨도 지울 수있다.

모니터링
도커 컴포즈에서 띄운 앱 목록을 보고 싶다면 ps 명령을 사용한다.

컴포즈 내에서 실행되는 프로세스들이 어떤 로그를 뿜는지 보고 싶을 수도 있다.
그럴때는 log 명령을 사용한다.

이외에도 자잘한 옵션들이 좀 있기도 하고 하지만, 일단은 여기까지만 정리해두겠다.
참조
https://docs.docker.com/compose/
https://www.44bits.io/ko/post/almost-perfect-development-environment-with-docker-and-docker-compose#%EB%8F%84%EC%BB%A4-%EC%BB%B4%ED%8F%AC%EC%A6%88%EB%A1%9C-%EA%B0%9C%EB%B0%9C-%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0