본문 바로가기
도커

docker-compose (도커컴포즈)

by SAMSUNG CLOUD-OKY 2020. 12. 2.
반응형

 

 

## docker-compose (도커컴포즈)

  • 컨테이너를 실행하는 구문을 docker-compose.yml 이라는 파일에 모아놓고 실행 구문을 직접 커맨드 라인에 실행 시킬필요 없이 docker-compose 실행구문을 통해 실행 있도록 하는것.

 

 

## MySQL, SpringBoot 컨테이너를 docker-compose.yml 파일로 만들어 보자.

 

 

version: '3.3'

services:

        app1:

                image: springboot

                ports:

                        - 8080:8080

                container_name: app1

        mysql:

                image: mysql:5.7

                environment:

                        - MYSQL_ROOT_PASSWORD=1234

                        - TZ=Asia/Seoul

                container_name: mysql

                ports:

                        - 3306:3306

 

 

 

 

 

 

 

## 실행하려면 도커뿐만 아니라 docker-compose 도 설치해야 한다.

https://docs.docker.com/compose/install/

 

- 도커 명령문을 이용하여 docker-compose 설치한다.

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

 

- 일반 유저가 사용할 있도록 docker-compose 사용권한을 허용한다.

sudo chmod +x /usr/local/bin/docker-compose

 

 

$ docker-compose up -d    (실행)

 

 

$ docker-compose ps    (조회)   - yml or yaml 파일 있는곳에서 실행

 

 

 

 

 

 

## Docker-compose 인프라를 코드화 있게 도와주는 도구이다.

 

그리고 배포할때 아주 좋은 점이있다.

앞의 배포 과정에서 이미지를 만들어 레지스트리에 PUSH하고 운영되는 서버에서 PULL해서

해당 이미지를 베이스로 사용한다고 했다.

그래서 배포를 할때 해당 이미지가 업데이트 되고 다음 명령을 실행하면 베이스 이미지가 변경된 컨테이너는

자동을 삭제되며 컨테이너가 다시 생성된다.

 

 

$ docker-compose up -d

 

내부적 실행

$ docker stop app1

$ docker rm app1

$ docker run --name app1 -p 8080:8080 -d springboot

 

 

 

 

 

 

 

 

 

 

## 그 다음 네트워크 부분을 설정할 있다.

앞의 네트워크 부분에서 알아봤듯이 도커 네트워크에서 할당된 IP 아니라 컨테이너 명으로 연결해야 한다.

컨테이너 명으로 통신하기 위해서는 기본 브릿지 네트워크가 아닌 브릿지 네트워크를 생성해야 한다.

 

 

version: '3.3'

services:

        app1:

                image: springboot

                ports:

                        - 8080:8080

                container_name: app1

                networks:

                        - mynetwork

 

        mysql:

                image: mysql:5.7

                environment:

                        - MYSQL_ROOT_PASSWORD=1234

                        - TZ=Asia/Seoul

                container_name: mysql

                ports:

                        - 3306:3306

                networks:

                        - mynetwork

networks:

        mynetwork:

 

이렇게 docker-compose 파일을 변경하면 mynetwork라는 브릿지 네트워크가 만들어지고 컨테이너까지 컨테이너 명으로 통신이 가능.

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

댓글