version: "3.8" # 파일 규격 버전 services: # 이 항목 밑에 실행하려는 컨테이너들을 정의 pharmacy-recommendation-redis: # 서비스명 container_name: pharmacy-recommendation-redis # 컨테이너 명 build: dockerfile: Dockerfile context: ./redis image: haerong22/pharmacy-recommendation-redis ports: - "6379:6379" pharmacy-recommendation-database: container_name: pharmacy-recommendation-database build: dockerfile: Dockerfile context: ./database image: haerong22/pharmacy-recommendation-database environment: - MARIADB_DATABASE=pharmacy-recommendation - MARIADB_ROOT_PASSWORD=${SPRING_DATASOURCE_PASSWORD} volumes: - ./database/config:/etc/mysql/conf.d - ./database/init:/docker-entrypoint-initdb.d ports: - "13306:3306" # 접근 포트 설정 (컨테이너 외부:컨테이너 내부) pharmacy-recommendation-app: container_name: pharmacy-recommendation-app build: . depends_on: # DB, REDIS 컨테이너가 실행된 다음 WEB을 실행시킨다. - pharmacy-recommendation-database - pharmacy-recommendation-redis image: haerong22/pharmacy-recommendation-app environment: - SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME} - SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD} - SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE} - KAKAO_REST_API_KEY=${KAKAO_REST_API_KEY} ports: - "80:8080" restart: always # depends on은 실행 순서만 컨트롤 할뿐, # 컨테이너 안의 서비스가 실행가능한 상태인지까지는 확인 하지 않기 때문에 # DB 또는 Redis가 아직 실행가능한 상태가 아니여서 실패하는 경우 재시작 하도록 설정