728x90
개념도 중요하지만, 우선 실전 위주로 팍팍 써봤다.
Docker-compose란
compose라는 단어 뜻이 "구성하다"처럼 한 번에 컨테이너를 만들어 주고, 이를 연동해주기 아주 용이하게 해준다. 이렇게 보면 해외 개발자들은 명칭을 아주 직관적으로 잘 만드는 것 같다. 왜 연동하기 용이하냐면, docker-compose에서 작성한 컨테이너들은 하나의 네트워크로 인식시켜주기 때문이다. 그렇게 하면, 아래의 예제처럼 spring boot, mariadb, nginx 등 이미지들이 따로 분리하면서 연결할 수 있으니 관리 차원에서 아주 편해지는 것이다.
NGINX + SpringBoot + MariaDB 컨테이너 생성
먼저 docker-compose.yml 파일을 만들어 주어 아래와 같이 작성해 보자.
# 파일 규격 버전
version: "3"
# 이 항목 밑에 실행하려는 컨테이너 들을 정의
services:
web:
image: nginx
ports:
- 80:80
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
server:
image: atk-server
build: ./docker/server
container_name: atk-ubuntu
stdin_open: true
tty: true
entrypoint: /bin/bash
# 서비스 명
database:
# 사용할 이미지
image: mariadb
# 컨테이너 실행 시 재시작
restart: always
# 컨테이너 이름 설정
container_name: atk-mysql
# 접근 포트 설정 (컨테이너 외부:컨테이너 내부)
ports:
- "3307:3306"
# -e 옵션
environment:
# MongoDB 계정 및 패스워드 설정 옵션
- MYSQL_DATABASE=atk
- MYSQL_ROOT_PASSWORD=atk123!
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
# -v 옵션 (다렉토리 마운트 설정)
- ~/data/mysql-db:/var/lib/mysql
spring:
image: atk-spring
build:
context: ./
dockerfile: ./docker/spring/Dockerfile
container_name: atk-spring
ports:
- 8080:8080
depends_on:
- database
environment:
SPRING_DATASOURCE_URL: jdbc:mariadb://database:3306/atk?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: atk123!
- services: 밑에 있는 내용들이 하나의 서비스들이 되고, 곧 컨테이너가 될 것이다. 해당 서비스명이 곧 도커 네트워크에서 식별자 역할을 하게 된다. 서비스명은 원하는데로 입력하자.
- image: 대상 이미지, Dockerfile을 빌드하는 경우에는 빌드되는 이미지명이 된다.
- build: Dockerfile을 빌드하는데 사용한다. 필자의 경우 Dockerfile들을 docker라는 디렉토리에 server, spring 디렉토리를 만들어 그 안에 Dockerfile들을 만들었기에 경로를 지정해주었다. 만약에 하나만 있으면 .만 해주면 된다.
- container_name: 컨테이너 명
- depends_on: 의존되는 서비스를 지정한다. 스프링 부트 같은 경우 디비가 없으면 정상 실행이 불가하니, 디비가 켜진 다음에 컨테이너가 생성되게끔 해주어야 한다.
- environment: 환경변수 등을 추가. 추후에 보안을 위해 외부에서 갖고오는 방법을 찾아두어야겠다.
- volumes: 컨테이너의 내용을 마운트 해준다. db 같은 경우 마운트를 안 해주고 컨테이너를 삭제하면 다 날라가기에, 실제 컴퓨터의 저장소에 기록하기용으로 많이 쓴다. 또는 nginx처럼 환경 설정을 지정하기 위해 사용한다.
이렇게 한 후 아래의 명령어를 입력하면 컨테이너들이 만들어 진다.
docker-compose up -d
-d는 백그라운드의 의미이다.
docker dashboard를 보면 다음과 같이 작동되는 것을 확인할 수 있다.
728x90
'Docker' 카테고리의 다른 글
[Docker] DockerFile 정리 (0) | 2022.04.11 |
---|
댓글