# .env
DB_USER={user이름}
DB_PASSWORD={password}
DB_DATABASE={database이름}
version: '3'
services:
...
mariadb:
image: mariadb:latest
container_name: mariadb
ports:
- "3306:3306"
volumes:
- ./docker_volumes/mariadb:/var/lib/mysql
restart: always
networks:
- infra
environment:
- MYSQL_USER=${DB_USER}
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
- MYSQL_DATABASE=${DB_DATABASE}
networks:
infra:
external: true
volumes:
...
mariadb:
driver: local
driver_opts:
type: none
device: $PWD/docker_volumes/mariadb
o: bind
restart: always
: 컨테이너가 종료될 때 항상 다시 시작하도록 설정infra
: bridge 네트워크 설정, 컨테이너들 간 통신 허용version: '3'
services:
...
mongodb:
image: mongo:latest
container_name: mongodb
ports:
- "27017:27017"
restart: always
networks:
- infra
environment:
- MONGO_INITDB_ROOT_USERNAME=${DB_USER}
- MONGO_INITDB_ROOT_PASSWORD=${DB_PASSWORD}
volumes:
- ./docker_volumes/mongodb:/data/db
- ./initMongoDB.js:/docker-entrypoint-initdb.d/init.js
networks:
infra:
external: true
volumes:
...
mongodb:
driver: local
driver_opts:
type: none
device: $PWD/docker_volumes/mariadb
o: bind
version: '3'
services:
...
redis:
image: redis
container_name: redis-app
ports:
- "6379:6379"
networks:
- infra
volumes:
- ./docker_volumes/redis:/data
- ./redis.conf:/etc/redis/redis.conf
restart: always
env_file:
- .env
networks:
infra:
external: true
redis.conf
redis 설정파일
최대 사용 메모리 용량 2GB로 설정
# 연결 가능한 네트위크(0.0.0.0 = Anywhere)
bind 0.0.0.0
# 연결 포트
port 6379
# Master 노드의 기본 사용자 비밀번호
requirepass ssafya303
# 최대 사용 메모리 용량(지정하지 않으면 시스템 전체 용량)
maxmemory 2gb
# 설정된 최대 사용 메모리 용량을 초과했을때 처리 방식
# - noeviction : 쓰기 동작에 대해 error 반환 (Default)
# - volatile-lru : expire 가 설정된 key 들중에서 LRU algorithm 에 의해서 선택된 key 제거
# - allkeys-lru : 모든 key 들 중 LRU algorithm에 의해서 선택된 key 제거
# - volatile-random : expire 가 설정된 key 들 중 임의의 key 제거
# - allkeys-random : 모든 key 들 중 임의의 key 제거
# - volatile-ttl : expire time(TTL)이 가장 적게 남은 key 제거 (minor TTL)
maxmemory-policy volatile-ttl
# == RDB 관련 설정 ==
# 저장할 RDB 파일명
dbfilename backup.rdb
# 15분 안에 최소 1개 이상의 key가 변경 되었을 때
save 900 1
# 5분 안에 최소 10개 이상의 key가 변경 되었을 때
save 300 10
# 60초 안에 최소 10000개 이상의 key가 변경 되었을 때
save 60 10000
# RDB 저장 실패 시 write 명령 차단 여부
stop-writes-on-bgsave-error no
# == AOF 관련 설정 ==
# AOF 사용 여부
appendonly yes
# 저장할 AOF 파일명
appendfilename appendonly.aof
# 디스크와 동기화 처리 방식
# - always : AOF 값을 추가할 때마다 fsync를 호출해서 디스크에 쓰기
# - everysec : 매초마다 fsync를 호출해서 디스크에 쓰기
# - no : OS가 실제 sync를 할 때까지 따로 설정하지 않음
appendfsync everysec
```
Redis의 AOF(Append Only File)