1. Docker 란?
: VM(Viture Machine)의 경량화 버전으로, 응용프로그램실행에 꼭 필요한 경량화된 OS 및 서버를 설치하여 컨테이너 기반으로
실행, 관리하는 오픈 소스(하나의 격리된 작은 PC 개념)
(추가설명 링크: https://www.ibm.com/kr-ko/topics/docker )
2. Docker 설치
1) 다운로드 : https://www.docker.com/
Docker: Accelerated Container Application Development
Docker is a platform designed to help developers build, share, and run container applications. We handle the tedious setup, so you can focus on the code.
www.docker.com
: 위의 경로에서 설치를 바로 해도 된다.(OS 버전에 맞는걸 선택하자!, Window 의 경우 별도의 WSL 작업이 필요하다)
2) 설치 확인
: docker --version 명령어로 아래와 같이 버전확인이 가능하다.
(Docker Dashboard 에서도 확인 가능)


3. Docker 를 사용하므로써 장점
- 하나의 물리서버에 여러개의 서버생성 가능
- 꼭 필요한 파일만을 설치하여 서버화 가능
- 컨테이너 간의 영향 및 외부프로그램의 영향을 제거하여, dev stage prod 환경을 동일하게 구성가능
(과거, 타 응용프로그램의 영향으로 인해, 코드에 문제가 없음에도 불구하고 오류가 나는경우 발생)
4. Mysql Dockerfile
FROM mysql
ENV MYSQL_USER=admin
ENV MYSQL_PASSWORD=1234
ENV MYSQL_ROOT_PASSWORD=1234
ENV MYSQL_DATABASE=commerce
CMD ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
docker build -t mysql .
docker run -d -p 3306:3306 --name mysql-container mysql
위의 dockerfile 을 직접 실행 or docker image 를 실행할때 위의 ENV 정보를 넣어주면 된다.

5. Docker Compose 로 작성
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: kotlin-mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: commerce
MYSQL_USER: basic
MYSQL_PASSWORD: basic1234
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
redis:
image: redis:7.4-alpine
container_name: kotlin-redis
ports:
- "6379:6379"
volumes:
- redis-data:/data
command: redis-server --appendonly yes
zookeeper:
image: confluentinc/cp-zookeeper:7.7.0
container_name: kotlin-zookeeper
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- "2181:2181"
kafka:
image: confluentinc/cp-kafka:7.7.0
container_name: kotlin-kafka
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
volumes:
- kafka-data:/var/lib/kafka/data
volumes:
mysql-data:
redis-data:
kafka-data:
실행명령어!
docker-compose up -d
6. 기타 명령어(정리용)
#현재 상태 파악
docker system df
#빌드캐시지우기
docker builder prune
#강제로캐시까지지우기
docker builder prune --all
#빌드이미지지우기
docker image prune -a
#사용하지않는볼륨삭제
docker volume prune
#사용하지 않는 컨테이너 제거
docker container prune'Kotlin Spring > Kotlin Spring 강의 내용' 카테고리의 다른 글
| [부록] Consumer Retry vs Command Replay 처리 (0) | 2026.02.03 |
|---|---|
| [부록] JPA(Java Persistence API) (0) | 2026.01.27 |
| [부록] REST 기반 마이크로 서비스 간 통신 - OpenFeign (0) | 2026.01.20 |
| 10) Kafka 기반 도메인 분리(3) - Saga 패턴이란? (0) | 2026.01.14 |
| 10) Kafka 기반 도메인 분리 (4) Transactional Outbox 패턴이란? (0) | 2026.01.13 |