반응형

Docker Compose 4

Docker Compose scale과 nginx 로드 밸런싱으로 부하 나누기

이 글은 2022년 10월 기준 기록입니다. 동일한 서비스를 여러 개 작동시켜 각 컨테이너에게 전달되는 부하를 줄여 봅니다.--scale 옵션이 같은 서비스를 여러 개 띄운다Docker Compose를 실행할 때 --scale 옵션을 사용하면 동일한 서비스를 여러 개 작동시킬 수 있습니다.$ docker compose --env-file test.env up -d --scale spring-crud=3 --scale postgres-db=2 --no-recreate --scale에는 서비스 이름에 대한 개수를 지정하면 되고, 지정하지 않은 서비스는 자동으로 1로 지정됩니다. 함께 붙인 --no-recreate 옵션은 변경이 필요한 컨테이너만 조작하도록 해 줍니다. 이미 잘 돌고 있는 컨테이너까지 다시 만..

Docker Compose에서 .env 파일 하나만 바꿔 끼우기

이 글은 2022년 10월 기준 기록입니다. 앞서 환경마다 docker-compose.dev.yml, docker-compose.prod.yml을 따로 두는 방식으로 설정을 분리했습니다. 그런데 이 방식은 환경이 늘어날 때마다 거의 같은 내용의 파일이 한 벌씩 늘어납니다. 여러 개의 docker-compose.yml 파일을 사용하지 않고, 하나의 파일에 설정만 다르게 적용하는 방법은 없을까요.Compose는 이미 .env 파일을 찾고 있다docker compose 명령은 기본적으로 ".env"라는 이름의 파일을 찾아서 읽습니다. 따로 설정하지 않아도 동작하는 규칙이므로, 별도의 이름을 쓰고 싶을 때만 --env-file 옵션으로 지정하면 됩니다.Compose 파일에서 값을 비우고 ${}로 남긴다값을 직접..

Docker External Config — 환경 변수로 이미지 밖에서 설정 주입하기

이 글은 2022년 10월 기준 기록입니다. Docker 이미지는 한 번 만들어지면 변하지 않는 상태를 유지합니다. 그렇다면 동일한 이미지로 여러 설정이 적용된 다른 컨테이너들을 만들려면 어떻게 해야 할까요.설정이 바뀔 때마다 이미지를 굽는 것은 비합리적이다문제는 이미지의 불변성 자체가 아니라, 그 불변성 때문에 생기는 반복입니다. 동일한 프로그램을 다른 설정으로 실행시키기 위해 매번 이미지를 만드는 것은 비합리적입니다. 개발용과 운영용의 차이가 DB 주소 한 줄뿐이어도 이미지를 두 벌 관리해야 합니다.그래서 질문은 이렇게 좁혀집니다. 이미지 내부의 설정을 컨테이너가 동작할 때 지정해 줄 수는 없을까?환경 변수가 이미지와 설정 사이의 통로다환경 변수는 운영 체제에서 관리되는 변수입니다. 그리고 각 컨테이..

Docker Compose — 여러 컨테이너를 한 덩어리로 묶어 관리하기

Docker Compose — 여러 컨테이너를 한 덩어리로 묶어 관리하기이 글은 2022년 10월 기준 기록입니다.각 서비스를 필요할 때 사용하기 위해 개별적인 컨테이너로 분리했습니다. 그런데 실제로 애플리케이션을 띄우려면 앱 컨테이너와 DB 컨테이너를 매번 각각 실행해야 합니다. 그것들을 필요에 따라 묶어서 동시에 관리할 수 있다면 어떨까요. 그 요구에 답하는 것이 Docker Compose입니다.Compose는 컨테이너 여러 개를 하나의 덩어리로 만든다Docker Compose는 여러 개의 컨테이너를 묶어서 한 덩어리로 사용하는 것을 의미합니다. 묶는 기준은 docker-compose.yml 파일이고, Compose는 이 파일의 내용에 따라 작동합니다. 여기서 얻는 것이 두 가지입니다.첫째, 컨테이너..

반응형