
Docker Compose는 "여러 컨테이너로 구성된 애플리케이션을 손쉽게 정의·실행·관리하기 위한 도구" 라고 할 수 있습니다.
아래는 mysql를 사용하는 web 어플리케이션의 docker compose 의 샘플입니다.
services:
web:
build: ./dir
image: webapp:tag
restart: always
depends_on:
- db
networks:
- service1
db:
image: mysql:8.0
restart: always
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=your_root_password
- MYSQL_DATABASE=your_database_name
- MYSQL_USER=your_username
- MYSQL_PASSWORD=your_user_password
volumes:
- ./data/conf.d:/etc/mysql/conf.d
- ./data/logs:/logs
- /usr/local/var/mysql:/var/lib/mysql
networks:
- service1
volumes:
mysql_data:
networks:
service1
| web: db: |
서비스명입니다.
| build: ./dir |
$ docker compose build 명령으로 Dockerfile 을 이미지로 생성할 시에 필요합니다.
위의 설정의 경우에는 ./dir/Dockerfile 이 존재해야 합니다.
만약 다른이름으로 Dockerfile 를 저장했다고 하면 아래와 같이 설정합니다.
| build: context: ./dir dockerfile: 커스텀dockerfile명 |
db 의 image: mysql:8.0 처럼 이미 이미지가 있을 경우에는 필요하지 않습니다.
| image: webapp:tag |
docker 이미지명을 나타내고 tag에 버젼닝을 할 수 있습니다. (예: webapp:1.5 )
build설정이 없는 경우는 docker hub 상에 이미 존재하는 이미지를 지정합니다.
| depends_on: |
의존적인 container 를 지정합니다. 예를 들면 db 가 먼저 container화 되어야 하는 경우는 지정합니다.
| networks: |
각각 서비스에서 공통적인 network를 지정한다면 다른 컨테이들과 연결(IP가 아닌 서비스명) 할 수 있습니다.
이의 장점은 DB 와 연결할 경우에 DB 어드레스를 변할 수 있는 IP보다 서비스명으로 지정하면 편리합니다.
| ports: |
호스트의 포트:컨테이너의 포트 순입니다. 컨테이너의 포트와 호스트의 포트를 맵핑합니다.
| environment: |
컨테이너에서 사용할 환경변수를 설정합니다.
| volumes: |
호스트의 패스:컨테이너 내의 패스 순입니다.
영구적으로 사용할 화일을 컨테이너에서 사용할 시 컨테이너내의 패스를 호스트 패스와 맵핑합니다.
결국 호스트내에 화일이 영구적으로 저장됩니다. (컨터이너는 메모리상의 인스턴스이므로 stop되면 사라지기 때문입니다.)
| volumes: mysql_data: networks: service1 |
명시적으로 지정합니다.
docker compose 명령
| build 화일에 변화가 있을때 마다 docker-compose down 을 먼저 실행 |
$ docker-compose build |
| up docker 들을 container 생성하여 start |
$ docker-compose up -d |
| down docker 들을 stop 하여 제거 |
$ docker-compose down |
| exec container 에 접속 |
$ docker-compose exec 서비스명 exec bash |
| logs -f 서비스container의 로그를 계속해서 출력 |
$ docker-compose logs -f 서비스명 |
※ 최신 docker compose는 - 없이 docker compose 를 사용합니다.
'Commands > docker (doccker-compose)' 카테고리의 다른 글
| docker / docker-compose.yml 최종 정리 (0) | 2023.12.14 |
|---|---|
| docker-compose 개발 결과물을 서버에 릴리스 (1) | 2023.12.09 |
| Dockerfile 알아보기 (0) | 2023.12.07 |
| (docker) 기본 사용 명령 (0) | 2023.08.11 |
| docker & docker-compose 설치 (0) | 2023.08.11 |