# Version top-level element
# Optional 정보 (사용자에게 정보제공적 의미)
# Docker-Compose에서는 사용하지 않음
version: '3.8'

# Name top-level element 
# 프로젝트명, (생략되면 자동으로 생성)
# 환경변수로 프로젝트명이 등록됨
# environment-variable ${COMPOSE_PROJECT_NAME}

# 컨테이너 정의
services:
  database:
		# 서비스명
    container_name: cms_db
		# 이미지명
    image: mariadb:10.6
		# 컨테이너가 종료할 때 적용하는 정책
		# no : 기본정책. 재시작하지 않음
		# always : 제거할 때까지 재시작
		# on-failure[:max-retries] : 종료 코드가 에러일 때만 재시작
		# max-retries 만큼 재시작함
		# unless-stopped: 종료코드와 상관없이 재시작하지만
		# 서비스가 멈추거나 제거할 때 재시작을 멈춤.
    restart: always
		# 환경변수 세팅
    environment:
      MYSQL_DATABASE: cms
      MYSQL_ROOT_HOST: '%'
      MYSQL_ROOT_PASSWORD: 1234
      TZ: 'Asia/Seoul'
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/conf.d:/etc/mysql/conf.d # MySQL 설정 파일 위치
      - ./mysql/initdb.d:/etc/mysql/initdb.d
    command:
      - "mysqld"
      - "--character-set-server=utf8mb4"
      - "--collation-server=utf8mb4_unicode_ci"
    networks:
      - test_network
  localstack:
    container_name: "localstack"
    image: localstack/localstack:0.14.3   # 버전에 따라 설정이 다른점이 많아서 지정하였음
    ports:
      - "4510-4559:4510-4559"  # external service port range
      - "4566:4566"            # LocalStack Edge Proxy
    environment:
      - SERVICES=sns,sqs,s3,dynamodb,ssm,secretsmanager,kms   # 사용할 서비스 목록
      - DEBUG=${DEBUG-}
      - DATA_DIR=${DATA_DIR-}
      - HOST_TMP_FOLDER=${TMPDIR:-/tmp/}localstack
      - DOCKER_HOST=unix:///var/run/docker.sock
      - AWS_ACCESS_KEY_ID=test            # 내부에서 aws 커맨드 사용을 위해 지정 awslocal 을 사용하면 필요없음
      - AWS_SECRET_ACCESS_KEY=test        # 위와 동일
      - AWS_DEFAULT_REGION=us-east-1      # 위와 동일
    volumes:
      - "${TMPDIR:-/tmp}/localstack:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
    networks:
      - test_network

networks:
  test_network: