Docker Compose를 사용해서 MariaDB, MongoDB를 초기 셋팅하는 보일러 플레이트를 작성했다.
디렉토리 구조

디렉토리는 위와 같이 구성되어 있다.

mariadb/data : DB의 data와 mount 할 디렉토리
mariadb/conf.d : my.cnf 파일을 공유하는 디렉토리 (character-set, time-zone 설정)

mongodb/data : DB의 data와 mount 할 디렉토리
mongodb/initdb.d : docker-entrypoint-initdb.d와 공유하여 컨테이너 최초 실행 시 실행될 스크립트를 넣는 디렉토리
.env & Dockerfile
# .env
MARIADB_VERSION=10.11.2
MONGODB_VERSION=6.0.5
# DB/mariadb/Dockerfile
ARG MARIADB_VERSION
FROM mariadb:${MARIADB_VERSION}
# DB/mongodb/Dockerfile
ARG MONGODB_VERSION
FROM mongo:${MONGODB_VERSION}
.env 파일에서 각 DB Image 버전을 설정하고, DockerHub에서 설정한 버전의 image를 사용해 build 할 수 있도록 Dockerfile을 작성한다.
docker-compose.yml
version: '3.9'
services:
mariadb:
container_name: yourbot-mariadb
build:
context: mariadb/
args:
MARIADB_VERSION: ${MARIADB_VERSION}
volumes:
- ./mariadb/conf.d:/etc/mysql/conf.d
- ./mariadb/data:/var/lib/mysql
environment:
MARIADB_ROOT_PASSWORD: {password}
MARIADB_USER: yourbot
MARIADB_PASSWORD: {password}
MARIADB_DATABASE: yourbot
restart: always
networks:
- yourbot
ports:
- 3306:3306
mongodb:
container_name: yourbot-mongodb
build:
context: mongodb/
args:
MONGODB_VERSION: ${MONGODB_VERSION}
volumes:
- ./mongodb/data:/data/db
- ./mongodb/initdb.d:/docker-entrypoint-initdb.d
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: {password}
MONGO_INITDB_DATABASE: yourbot
restart: always
networks:
- yourbot
ports:
- 27017:27017
networks:
yourbot:
driver: bridge
docker-compose.yml를 up하여 컨테이너가 실행되는 것을 확인하자.
주의사항
MongoDB의 경우 Collection이 1개도 존재하지 않으면 show dbs 명령 시에도 보이지 않기 때문에 당황하지 말자.
MariaDB는 컨테이너에서 mariadb-secure-installation 명령어를 입력하여 해당 설정을 진행하자.
- 익명 사용자 제거
- root 계정 원격 접속 여부 N
- TEST DB 삭제
'Docker' 카테고리의 다른 글
| [Docker] docker compose boilerplate (0) | 2024.04.21 |
|---|---|
| [Docker] Docker Compose V2 (0) | 2024.04.21 |
| [Docker] 도커를 사용해서 로컬에 mysql, redis 구성 (0) | 2023.11.11 |