diff --git a/.gitignore b/.gitignore index 7f2cc3ce1..5f562e9c5 100644 --- a/.gitignore +++ b/.gitignore @@ -56,8 +56,9 @@ dump.rdb **/resources/application-qa.yml **/resources/dongnae_firebase_key.json -Dockerfile -docker-compose.yaml +**/mysql_data +**/redis_data + deploy_*.sh app-*.yaml log/ diff --git a/app-main/Dockerfile b/app-main/Dockerfile new file mode 100644 index 000000000..6a8df50a1 --- /dev/null +++ b/app-main/Dockerfile @@ -0,0 +1,17 @@ +# 1. Zulu OpenJDK 17 기반 이미지 사용 +FROM azul/zulu-openjdk-alpine:17 + +# 2. 작업 디렉토리 생성 +WORKDIR /app + +# 3. jar 파일 복사 (빌드 결과물에 맞게 경로 조정) +COPY app-main/build/libs/*.jar app.jar + +# 4. 리소스 및 환경 파일 복사 +COPY /app-main/src/main/resources/application-local.yml /app/src/main/resources/application.yml +COPY /app-main/src/main/resources/dongnae_firebase_key.json /app/src/main/resources/dongnae_firebase_key.json + +# 5. 애플리케이션 실행 +ENTRYPOINT ["java", "-jar", "app.jar"] + + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..1f1141e8b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,49 @@ +services: + mysql: + image: mysql:8.0 + container_name: db_caucse_mysql + environment: + MYSQL_ROOT_PASSWORD: 1234 + MYSQL_DATABASE: db_caucse + TZ: Asia/Seoul + ports: + - "3308:3306" + volumes: + - ./mysql_data:/var/lib/mysql + healthcheck: + test: ["CMD-SHELL", "mysqladmin ping -h localhost -u root -p1234"] + interval: 10s + timeout: 5s + retries: 5 + + redis: + image: redis:latest + container_name: db_caucse_redis + ports: + - "6379:6379" + volumes: + - ./redis_data:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 5s + retries: 5 + + app: + build: + context: . + dockerfile: app-main/Dockerfile + container_name: db_caucse_app + depends_on: + mysql: + condition: service_healthy + redis: + condition: service_healthy + ports: + - "8080:8080" + environment: + SPRING_DATASOURCE_USERNAME: root + SPRING_DATASOURCE_PASSWORD: 1234 + SPRING_DATA_REDIS_HOST: redis + SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/db_caucse?serverTimezone=Asia/Seoul&characterEncoding=UTF-8 + SPRING_PROFILES_ACTIVE: local diff --git a/readme.md b/readme.md index d99f1fd48..b69626c95 100644 --- a/readme.md +++ b/readme.md @@ -57,3 +57,28 @@ ## Contact **Email** : caucsedongne@gmail.com + +## Docker Compose를 이용한 테스트 환경 구축 및 사용법 + +### 1. app-main 빌드 + +> 변경된 코드나 의존성이 있을 경우 이미지를 다시 빌드해야 합니다. + +### 2. 컨테이너 및 볼륨 정리 (선택 사항) + +> docker compose down -v + +- **설명:** + 모든 컨테이너와 네트워크, **그리고 연결된 볼륨까지 모두 삭제**할 때 사용합니다. + - DB를 초기화하거나, 깨끗한 환경에서 테스트를 진행하고 싶을 때 유용합니다. + - 일부 데이터(예: DB 볼륨)를 보존하려면 `-v` 옵션 없이 `docker compose down`만 실행하세요. + +### 3. 컨테이너 실행 + +> docker compose up + +- **설명:** + `docker-compose.yml`에 정의된 모든 서비스가 실행됩니다. +- 백그라운드(Detached) 모드로 실행하려면: + +> docker compose up -d \ No newline at end of file