From aefff9bcb234058445253c82ba7b5aefa9bd4c2a Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 13:10:07 +0900 Subject: [PATCH 01/59] ci: githubaction ci test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 기존 작성된 dockerfile을 기준으로 ci가 잘 이루어지는지 테스트 --- .github/workflows/docker-ci.yml | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/docker-ci.yml diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml new file mode 100644 index 00000000..11a2b659 --- /dev/null +++ b/.github/workflows/docker-ci.yml @@ -0,0 +1,36 @@ +name: Build and Push Docker Images + +on: + push: + branches: + - Ci/#91-cicd-gitaction +# todo: 추후 main으로 수정할 것 + +jobs: + build-and-push: + runs-on: ubuntu-latest + + strategy: + matrix: + service: + - eureka-server + - gateway-service + - user-service + - flight-service + - reservation-service + - queue-service + + steps: + - name: Checkout source + uses: actions/checkout@v3 + + - name: Log in to Docker Hub + run: echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin + + - name: Build Docker Image + run: | + docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.service }}:latest ./${{ matrix.service }} + + - name: Push Docker Image + run: | + docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.service }}:latest From 8d7d4b2a4b1d08c88519fd05351af911973a6034 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 13:16:01 +0900 Subject: [PATCH 02/59] fix: docker_username MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 단순 변수명 수정 --- .github/workflows/docker-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml index 11a2b659..1e5adc93 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci.yml @@ -25,7 +25,7 @@ jobs: uses: actions/checkout@v3 - name: Log in to Docker Hub - run: echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin + run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin - name: Build Docker Image run: | From 72ba170dd811d75a730603922fdcdac4909d7eac Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 13:19:06 +0900 Subject: [PATCH 03/59] fix: docker login MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docker login 방식 수정 --- .github/workflows/docker-ci.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml index 1e5adc93..c0fdaaf5 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci.yml @@ -4,7 +4,7 @@ on: push: branches: - Ci/#91-cicd-gitaction -# todo: 추후 main으로 수정할 것 + # todo: 추후 main으로 수정할 것 jobs: build-and-push: @@ -25,7 +25,10 @@ jobs: uses: actions/checkout@v3 - name: Log in to Docker Hub - run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} - name: Build Docker Image run: | From 6f2cee8fda4d01a75b7dc9f21fcb6ca26064891f Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 13:27:05 +0900 Subject: [PATCH 04/59] fix: secret test secret read test --- .github/workflows/docker-ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml index c0fdaaf5..96eb3a5d 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci.yml @@ -24,6 +24,11 @@ jobs: - name: Checkout source uses: actions/checkout@v3 + - name: Print Docker Username + run: + echo "Docker username: ${{ secrets.DOCKER_USERNAME }}" + + - name: Log in to Docker Hub uses: docker/login-action@v2 with: From b0d1b9693819cdbd8aa5cd0ab9dd3650b543c7dd Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 13:32:45 +0900 Subject: [PATCH 05/59] fix: secret test secret read test --- .github/workflows/docker-ci.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml index 96eb3a5d..a7ef5c8c 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci.yml @@ -25,9 +25,7 @@ jobs: uses: actions/checkout@v3 - name: Print Docker Username - run: - echo "Docker username: ${{ secrets.DOCKER_USERNAME }}" - + run: echo "Docker username: ${{ secrets.DOCKER_USERNAME }}" - name: Log in to Docker Hub uses: docker/login-action@v2 From a9758875318b911e641e6f89b058c0c8590300f1 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 13:48:20 +0900 Subject: [PATCH 06/59] fix: secret name fix secret name --- .github/workflows/docker-ci.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml index a7ef5c8c..42aa2d37 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci.yml @@ -24,14 +24,11 @@ jobs: - name: Checkout source uses: actions/checkout@v3 - - name: Print Docker Username - run: echo "Docker username: ${{ secrets.DOCKER_USERNAME }}" - - name: Log in to Docker Hub uses: docker/login-action@v2 with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Build Docker Image run: | From d946810649ca009e32ab4b28e5014c1eb48b99b8 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 16:53:15 +0900 Subject: [PATCH 07/59] fix: gitaction cd MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gitaction ssh 접속을 통한 직접적인 cd작업 --- .github/workflows/docker-cd.yml | 52 +++++++++ docker-compose-server.yml | 193 ++++++++++++++++++++++++++++++++ 2 files changed, 245 insertions(+) create mode 100644 .github/workflows/docker-cd.yml create mode 100644 docker-compose-server.yml diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml new file mode 100644 index 00000000..4767d5ef --- /dev/null +++ b/.github/workflows/docker-cd.yml @@ -0,0 +1,52 @@ +name: Deploy to OCI via SSH + +on: + push: + branches: [ main ] + +jobs: + deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: set up .env + run: | + cat < .env + JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} + USER_DB_ROOT_PASSWORD=${{ secrets.USER_DB_ROOT_PASSWORD }} + USER_DB_ID=${{ secrets.USER_DB_ID }} + USER_DB_PASSWORD=${{ secrets.USER_DB_PASSWORD }} + RESERVATION_DB_ROOT_PASSWORD=${{ secrets.RESERVATION_DB_ROOT_PASSWORD }} + RESERVATION_DB_ID=${{ secrets.RESERVATION_DB_ID }} + RESERVATION_DB_PASSWORD=${{ secrets.RESERVATION_DB_PASSWORD }} + FLIGHT_DB_ID=${{ secrets.FLIGHT_DB_ID }} + FLIGHT_DB_PASSWORD=${{ secrets.FLIGHT_DB_PASSWORD }} + AMADEUS_CLIENT_ID=${{ secrets.AMADEUS_CLIENT_ID }} + AMADEUS_CLIENT_SECRET=${{ secrets.AMADEUS_CLIENT_SECRET }} + GF_SECURITY_ADMIN_USER=${{ secrets.GF_SECURITY_ADMIN_USER }} + GF_SECURITY_ADMIN_PASSWORD=${{ secrets.GF_SECURITY_ADMIN_PASSWORD }} + EOF + + - name: Set up SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -H ${{ secrets.INSTANCE_IP }} >> ~/.ssh/known_hosts + + - name: Send docker-compose files and .env + run: | + scp ./docker-compose-server.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ + scp ./.env ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ + + - name: Run docker compose on server + run: | + ssh ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} << 'EOF' + cd /home/ubuntu/app + docker compose pull # 이미지 업데이트 (옵션) + docker compose down # 기존 컨테이너 중지 (옵션) + docker compose up -d # 재시작 + EOF diff --git a/docker-compose-server.yml b/docker-compose-server.yml new file mode 100644 index 00000000..9cf8790a --- /dev/null +++ b/docker-compose-server.yml @@ -0,0 +1,193 @@ +services: + eureka-server: + image: duckori/eureka-server:latest + container_name: oneultanda-eureka-server + ports: + - "19090:19090" + + gateway: + image: duckori/gateway-service:latest + ports: + - "19091:19091" + env_file: + - .env + environment: + - JWT_SECRET_KEY=${JWT_SECRET_KEY} + depends_on: + - eureka-server + - kafka + - redis + + user-service: + image: duckori/user-service:latest + container_name: oneultanda-user-service + volumes: + - ./user-service:/app/user-service + ports: + - "19092:19092" + env_file: + - .env + environment: + - JWT_SECRET_KEY=${JWT_SECRET_KEY} + depends_on: + - user-db + - eureka-server + - gateway + - redis + + user-db: + image: mysql:8.0 + container_name: oneultanda-user-db + restart: always + environment: + - MYSQL_ROOT_PASSWORD=${USER_DB_ROOT_PASSWORD} + - MYSQL_DATABASE=user_db + - MYSQL_USER=${USER_DB_ID} + - MYSQL_PASSWORD=${USER_DB_PASSWORD} + ports: + - "3309:3306" + #todo: 추후에 port 확인, 변경 필요 + volumes: + - user-mysql-data:/var/lib/mysql + + flight-service: + image: duckori/flight-service:latest + container_name: oneultanda-flight-service + volumes: + - ./flight-service:/app/flight-service + ports: + - "19094:19094" + env_file: + - .env + environment: + - AMADEUS_CLIENT_ID=${AMADEUS_CLIENT_ID} + - AMADEUS_CLIENT_SECRET=${AMADEUS_CLIENT_SECRET} + depends_on: + - flight-db + - redis + - eureka-server + + flight-db: + image: postgres:16.3 + container_name: oneultanda-flight-db + environment: + - POSTGRES_USER=${FLIGHT_DB_ID} + - POSTGRES_DB=flight_db + - POSTGRES_PASSWORD=${FLIGHT_DB_PASSWORD} + ports: + - "5433:5432" + volumes: + - flight-postgres-data:/var/lib/postgresql/data + - ./init-scripts:/docker-entrypoint-initdb.d + + reservation-service: + image: duckori/reservation-service:latest + container_name: oneultanda-reservation-service + volumes: + - ./reservation-service:/app/reservation-service + ports: + - "19095:19095" + env_file: + - .env + depends_on: + - reservation-db + - kafka + - eureka-server + + reservation-db: + image: mysql:8.0 + container_name: oneultanda-reservation-db + environment: + - MYSQL_ROOT_PASSWORD=${RESERVATION_DB_ROOT_PASSWORD} + - MYSQL_DATABASE=reservation_db + - MYSQL_USER=${RESERVATION_DB_ID} + - MYSQL_PASSWORD=${RESERVATION_DB_PASSWORD} + ports: + - "3307:3306" + volumes: + - reservation-mysql-data:/var/lib/mysql + + queue-service: + image: duckori/queue-service:latest + container_name: oneultanda-queue-service + volumes: + - ./queue-service:/app/queue-service + ports: + - "19096:19096" + env_file: + - .env + depends_on: + - redis + - kafka + - eureka-server + + redis: + image: redis:latest + container_name: oneultanda-redis + ports: + - "6379:6379" + restart: always + + zookeeper: + image: wurstmeister/zookeeper:latest + platform: linux/amd64 + ports: + - "2181:2181" + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + ZOOKEEPER_TICK_TIME: 2000 + + kafka: + image: wurstmeister/kafka:latest + platform: linux/amd64 + ports: + - "9092:9092" + environment: + KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:29092,OUTSIDE://localhost:9092 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT + KAFKA_LISTENERS: INSIDE://0.0.0.0:29092,OUTSIDE://0.0.0.0:9092 + KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + + kafka-ui: + image: provectuslabs/kafka-ui:latest + platform: linux/amd64 + ports: + - "8080:8080" + environment: + KAFKA_CLUSTERS_0_NAME: local + KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 + KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181 + KAFKA_CLUSTERS_0_READONLY: "false" + + grafana: + image: grafana/grafana:latest + container_name: grafana + ports: + - "3000:3000" + volumes: + - grafana-storage:/var/lib/grafana + - ./grafana/provisioning:/etc/grafana/provisioning + environment: + - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} + - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD} + + prometheus: + image: prom/prometheus:latest + container_name: prometheus + ports: + - "9090:9090" + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml + - prometheus_data:/prometheus + command: + - '--config.file=/etc/prometheus/prometheus.yml' + +volumes: + user-mysql-data: + reservation-mysql-data: + flight-postgres-data: + prometheus_data: + grafana-storage: From 328fb8e089f7142df9b91de142d1af4c4a60eb79 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 16:56:23 +0900 Subject: [PATCH 08/59] fix: gitaction cd MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gitaction ssh 접속을 통한 직접적인 cd작업 --- .github/workflows/docker-cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index 4767d5ef..c69568d6 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -2,7 +2,7 @@ name: Deploy to OCI via SSH on: push: - branches: [ main ] + branches: [ Ci/#91-cicd-gitaction ] jobs: deploy: From 37827c90de8c2a9ff796cc35e5f1421218fc23a9 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 18:30:52 +0900 Subject: [PATCH 09/59] fix: gitaction cd, directory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gitaction ssh 접속을 통한 직접적인 cd작업 directory 확실히 생성 --- .github/workflows/docker-cd.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index c69568d6..1acf3179 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -37,6 +37,10 @@ jobs: chmod 600 ~/.ssh/id_rsa ssh-keyscan -H ${{ secrets.INSTANCE_IP }} >> ~/.ssh/known_hosts + - name: Make sure remote directory exists + run: | + ssh ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} "mkdir -p /home/${{ secrets.SSH_USER }}/app" + - name: Send docker-compose files and .env run: | scp ./docker-compose-server.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ From 352670c2b61437f99fcc0c06e55e02b61298aa5b Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 18:40:59 +0900 Subject: [PATCH 10/59] fix: gitaction ci, cd workflows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ci cd workflow 설정, eof -> tt 로 변경 --- .github/workflows/docker-cd.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index 1acf3179..1f09ff4a 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -1,8 +1,10 @@ name: Deploy to OCI via SSH on: - push: - branches: [ Ci/#91-cicd-gitaction ] + workflow_run: + workflows: [ "Build and Push Docker Images" ] + types: + - completed jobs: deploy: @@ -48,9 +50,10 @@ jobs: - name: Run docker compose on server run: | - ssh ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} << 'EOF' - cd /home/ubuntu/app - docker compose pull # 이미지 업데이트 (옵션) - docker compose down # 기존 컨테이너 중지 (옵션) - docker compose up -d # 재시작 - EOF + ssh -tt ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} " + cd /home/ubuntu/app && + docker compose pull && + docker compose down && + docker compose up -d + " + From c78c578095322a740074f27b47274b811caf7b1d Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 18:45:17 +0900 Subject: [PATCH 11/59] fix: gitaction cd test cd test --- .github/workflows/docker-cd.yml | 6 ++---- .github/workflows/docker-ci.yml | 3 ++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index 1f09ff4a..4c346773 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -1,10 +1,8 @@ name: Deploy to OCI via SSH on: - workflow_run: - workflows: [ "Build and Push Docker Images" ] - types: - - completed + push: + branches: [ Ci/#91-cicd-gitaction ] jobs: deploy: diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml index 42aa2d37..2a62d6e6 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci.yml @@ -3,7 +3,8 @@ name: Build and Push Docker Images on: push: branches: - - Ci/#91-cicd-gitaction +# - Ci/#91-cicd-gitaction + - main # todo: 추후 main으로 수정할 것 jobs: From 70e25ac2801965c82c5e4bf24b97d567f873c260 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 18:57:09 +0900 Subject: [PATCH 12/59] fix: gitaction cd test cd test --- .github/workflows/docker-cd.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index 4c346773..429bb68b 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -2,7 +2,8 @@ name: Deploy to OCI via SSH on: push: - branches: [ Ci/#91-cicd-gitaction ] + branches: + - Ci/#91-cicd-gitaction jobs: deploy: @@ -49,9 +50,8 @@ jobs: - name: Run docker compose on server run: | ssh -tt ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} " - cd /home/ubuntu/app && - docker compose pull && - docker compose down && - docker compose up -d + cd /home/${{ secrets.SSH_USER }}/app && + docker-compose pull && + docker-compose down && + docker-compose up -d " - From 88eea9248ff2d7fb17f10587b026e5844abe79c0 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 19:01:09 +0900 Subject: [PATCH 13/59] fix: gitaction cd test cd test --- .github/workflows/docker-cd.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index 429bb68b..5fce90ec 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -44,14 +44,14 @@ jobs: - name: Send docker-compose files and .env run: | - scp ./docker-compose-server.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ + scp ./docker-compose-server.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/docker-compose.yml scp ./.env ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ - name: Run docker compose on server run: | ssh -tt ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} " - cd /home/${{ secrets.SSH_USER }}/app && - docker-compose pull && - docker-compose down && - docker-compose up -d + cd /home/${{ secrets.SSH_USER }}/app && + docker compose pull && + docker compose down && + docker compose up -d " From 3f5087839a6a5291a5be956f3c158be320a0c5d8 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 19:22:44 +0900 Subject: [PATCH 14/59] fix: docker-compose-server depend on MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docker-compose-server depend on 수정을 통해 한번에 실행해도 중단되는 것이 없도록 수정 --- docker-compose-server.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index 9cf8790a..60f31388 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -32,7 +32,6 @@ services: depends_on: - user-db - eureka-server - - gateway - redis user-db: @@ -46,7 +45,6 @@ services: - MYSQL_PASSWORD=${USER_DB_PASSWORD} ports: - "3309:3306" - #todo: 추후에 port 확인, 변경 필요 volumes: - user-mysql-data:/var/lib/mysql @@ -150,6 +148,8 @@ services: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 volumes: - /var/run/docker.sock:/var/run/docker.sock + depends_on: + - zookeeper kafka-ui: image: provectuslabs/kafka-ui:latest @@ -161,6 +161,8 @@ services: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181 KAFKA_CLUSTERS_0_READONLY: "false" + depends_on: + - kafka grafana: image: grafana/grafana:latest @@ -173,6 +175,8 @@ services: environment: - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD} + depends_on: + - prometheus prometheus: image: prom/prometheus:latest From 20d08c21556c12bab2c727dc2b1271418c154986 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 20:06:47 +0900 Subject: [PATCH 15/59] fix: prometheus.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit prometheus.yml을 포함하여 보내고 server 내부에서 compose 테스트 해보기 --- .github/workflows/docker-cd.yml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index 5fce90ec..0b27f55e 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -46,12 +46,13 @@ jobs: run: | scp ./docker-compose-server.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/docker-compose.yml scp ./.env ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ - - - name: Run docker compose on server - run: | - ssh -tt ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} " - cd /home/${{ secrets.SSH_USER }}/app && - docker compose pull && - docker compose down && - docker compose up -d - " + scp ./prometheus.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/prometheus.yml + +# - name: Run docker compose on server +# run: | +# ssh -tt ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} " +# cd /home/${{ secrets.SSH_USER }}/app && +# docker compose pull && +# docker compose down && +# docker compose up -d +# " From 0b5035143a7066ce70656e2ec6efa9b7ea2af936 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 24 Apr 2025 20:09:11 +0900 Subject: [PATCH 16/59] fix: prometheus.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit prometheus.yml을 포함하여 보내고 server 내부에서 compose 테스트 해보기 --- .github/workflows/docker-cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index 0b27f55e..a724d38a 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -46,7 +46,7 @@ jobs: run: | scp ./docker-compose-server.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/docker-compose.yml scp ./.env ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ - scp ./prometheus.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/prometheus.yml + scp ./prometheus.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ # - name: Run docker compose on server # run: | From 26bf418c4b34f670945a3034af32db9450d59aed Mon Sep 17 00:00:00 2001 From: "ori_SS.K" <85011923+kss123456789@users.noreply.github.com> Date: Wed, 30 Apr 2025 18:24:31 +0900 Subject: [PATCH 17/59] Update docker-cd.yml Update docker-cd.yml with aws t3.medium --- .github/workflows/docker-cd.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index a724d38a..842d096e 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -48,11 +48,11 @@ jobs: scp ./.env ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ scp ./prometheus.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ -# - name: Run docker compose on server -# run: | -# ssh -tt ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} " -# cd /home/${{ secrets.SSH_USER }}/app && -# docker compose pull && -# docker compose down && -# docker compose up -d -# " + - name: Run docker compose on server + run: | + ssh -tt ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} " + cd /home/${{ secrets.SSH_USER }}/app && + docker compose pull && + docker compose down && + docker compose up -d + " From 48bf283a413996e1b3ae842c7751a406d5eba94b Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 20:00:10 +0900 Subject: [PATCH 18/59] fix: user service error fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit user service에서 db연결 오류 수정, 이외의 다른 사항 확인완료, ec2 환경에서 잘 실행되는지 테스트 진행용 --- .github/workflows/docker-cd.yml | 10 +++++++--- .github/workflows/docker-ci.yml | 2 +- gateway-service/src/test/http/gateway.http | 1 + user-service/src/main/resources/application.yml | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index a724d38a..04d56226 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -1,9 +1,13 @@ name: Deploy to OCI via SSH on: - push: - branches: - - Ci/#91-cicd-gitaction + workflow_run: + workflows: [ "CI" ] + types: + - completed +# push: +# branches: +# - Ci/#91-cicd-gitaction jobs: deploy: diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml index 2a62d6e6..290cad32 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci.yml @@ -3,7 +3,7 @@ name: Build and Push Docker Images on: push: branches: -# - Ci/#91-cicd-gitaction + - Ci/#91-cicd-gitaction - main # todo: 추후 main으로 수정할 것 diff --git a/gateway-service/src/test/http/gateway.http b/gateway-service/src/test/http/gateway.http index a75b5fb1..fd06c9d3 100644 --- a/gateway-service/src/test/http/gateway.http +++ b/gateway-service/src/test/http/gateway.http @@ -1,4 +1,5 @@ ### 유저 생성 - internal +# todo: 중복 유저 관련해서는 500에러가 나온다 수정 필요 POST http://localhost:19091/api/v1/users/signup Content-Type: application/json diff --git a/user-service/src/main/resources/application.yml b/user-service/src/main/resources/application.yml index b0a50de5..9d2c8b26 100644 --- a/user-service/src/main/resources/application.yml +++ b/user-service/src/main/resources/application.yml @@ -3,7 +3,7 @@ spring: name: user-service datasource: - url: jdbc:mysql://oneultanda-user-db:3306/user_db + url: jdbc:mysql://oneultanda-user-db:3309/user_db username: admin password: 1234 driver-class-name: com.mysql.cj.jdbc.Driver From d98b021af1cf052e79f234067460fe816ebceb8d Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 20:06:09 +0900 Subject: [PATCH 19/59] fix: after merge, retest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit merge 진행후 다시 테스트 진행 --- .github/workflows/docker-cd.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index ba8c0c45..effc66c5 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -2,7 +2,7 @@ name: Deploy to OCI via SSH on: workflow_run: - workflows: [ "CI" ] + workflows: [ "docker-ci" ] types: - completed # push: @@ -59,4 +59,4 @@ jobs: docker compose pull && docker compose down && docker compose up -d - " + " \ No newline at end of file From d815a4c8335ae3e0be8c0867ccbe7dfe9ccb7f98 Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 20:10:16 +0900 Subject: [PATCH 20/59] fix: after merge, retest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit merge 진행후 다시 테스트 진행 --- .github/workflows/docker-cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index effc66c5..d21037e3 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -2,7 +2,7 @@ name: Deploy to OCI via SSH on: workflow_run: - workflows: [ "docker-ci" ] + workflows: [ "Build and Push Docker Images" ] types: - completed # push: From abdecf985b5c107aa46232e354445396ba481f2a Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 20:19:45 +0900 Subject: [PATCH 21/59] fix: after merge, retest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit merge 진행후 다시 테스트 진행 --- .github/workflows/docker-cd.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index d21037e3..fab10105 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -1,4 +1,4 @@ -name: Deploy to OCI via SSH +name: Deploy to aws via SSH on: workflow_run: @@ -11,6 +11,7 @@ on: jobs: deploy: + if: ${{ github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: From 5d44121ca29b9ebbc5cc616ea4c075b29bac6691 Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 20:29:13 +0900 Subject: [PATCH 22/59] fix: after merge, retest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit merge 진행후 다시 테스트 진행 --- .github/workflows/docker-cd.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index fab10105..f40ddc18 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -2,7 +2,8 @@ name: Deploy to aws via SSH on: workflow_run: - workflows: [ "Build and Push Docker Images" ] + workflows: + - "Build and Push Docker Images" types: - completed # push: From 4d505a31827e8ad4608441c20f3ca522e310b0b0 Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 20:48:37 +0900 Subject: [PATCH 23/59] fix: cd test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cd의 workflows run의 경우 default branch에서만 작동한다는 부분을 확인-> 테스트를 위해 cd 만 별도로 실행 시도 --- .github/workflows/docker-cd.yml | 14 +++++++------- .github/workflows/docker-ci.yml | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index f40ddc18..69f5c1f6 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -2,13 +2,13 @@ name: Deploy to aws via SSH on: workflow_run: - workflows: - - "Build and Push Docker Images" - types: - - completed -# push: -# branches: -# - Ci/#91-cicd-gitaction +# workflows: +# - "Build and Push Docker Images" +# types: +# - completed + push: + branches: + - Ci/#91-cicd-gitaction jobs: deploy: diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml index 290cad32..2a62d6e6 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci.yml @@ -3,7 +3,7 @@ name: Build and Push Docker Images on: push: branches: - - Ci/#91-cicd-gitaction +# - Ci/#91-cicd-gitaction - main # todo: 추후 main으로 수정할 것 From 6ea786b47dae085c622024d9484b4a955fe72a18 Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 20:50:11 +0900 Subject: [PATCH 24/59] fix: fix cd test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cd의 workflows run의 경우 default branch에서만 작동한다는 부분을 확인-> 테스트를 위해 cd 만 별도로 실행 시도 --- .github/workflows/docker-cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index 69f5c1f6..d185105d 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -1,7 +1,7 @@ name: Deploy to aws via SSH on: - workflow_run: +# workflow_run: # workflows: # - "Build and Push Docker Images" # types: From 19e0933bd18d23008f43517f12fbfd688236e590 Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 20:51:29 +0900 Subject: [PATCH 25/59] fix: fix cd test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cd의 workflows run의 경우 default branch에서만 작동한다는 부분을 확인-> 테스트를 위해 cd 만 별도로 실행 시도 --- .github/workflows/docker-cd.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index d185105d..f396abe3 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -12,7 +12,7 @@ on: jobs: deploy: - if: ${{ github.event.workflow_run.conclusion == 'success' }} +# if: ${{ github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: From e65cfc5bdb1fbd59411b6ec292940643ee48dbe6 Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 21:27:16 +0900 Subject: [PATCH 26/59] fix: fix env secret MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit env secret의 참조 방법 수정 --- .github/workflows/docker-cd.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index f396abe3..d0842a38 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -22,19 +22,19 @@ jobs: - name: set up .env run: | cat < .env - JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} - USER_DB_ROOT_PASSWORD=${{ secrets.USER_DB_ROOT_PASSWORD }} - USER_DB_ID=${{ secrets.USER_DB_ID }} - USER_DB_PASSWORD=${{ secrets.USER_DB_PASSWORD }} - RESERVATION_DB_ROOT_PASSWORD=${{ secrets.RESERVATION_DB_ROOT_PASSWORD }} - RESERVATION_DB_ID=${{ secrets.RESERVATION_DB_ID }} - RESERVATION_DB_PASSWORD=${{ secrets.RESERVATION_DB_PASSWORD }} - FLIGHT_DB_ID=${{ secrets.FLIGHT_DB_ID }} - FLIGHT_DB_PASSWORD=${{ secrets.FLIGHT_DB_PASSWORD }} - AMADEUS_CLIENT_ID=${{ secrets.AMADEUS_CLIENT_ID }} - AMADEUS_CLIENT_SECRET=${{ secrets.AMADEUS_CLIENT_SECRET }} - GF_SECURITY_ADMIN_USER=${{ secrets.GF_SECURITY_ADMIN_USER }} - GF_SECURITY_ADMIN_PASSWORD=${{ secrets.GF_SECURITY_ADMIN_PASSWORD }} + JWT_SECRET_KEY=${{ env.JWT_SECRET_KEY }} + USER_DB_ROOT_PASSWORD=${{ env.USER_DB_ROOT_PASSWORD }} + USER_DB_ID=${{ env.USER_DB_ID }} + USER_DB_PASSWORD=${{ env.USER_DB_PASSWORD }} + RESERVATION_DB_ROOT_PASSWORD=${{ env.RESERVATION_DB_ROOT_PASSWORD }} + RESERVATION_DB_ID=${{ env.RESERVATION_DB_ID }} + RESERVATION_DB_PASSWORD=${{ env.RESERVATION_DB_PASSWORD }} + FLIGHT_DB_ID=${{ env.FLIGHT_DB_ID }} + FLIGHT_DB_PASSWORD=${{ env.FLIGHT_DB_PASSWORD }} + AMADEUS_CLIENT_ID=${{ env.AMADEUS_CLIENT_ID }} + AMADEUS_CLIENT_SECRET=${{ env.AMADEUS_CLIENT_SECRET }} + GF_SECURITY_ADMIN_USER=${{ env.GF_SECURITY_ADMIN_USER }} + GF_SECURITY_ADMIN_PASSWORD=${{ env.GF_SECURITY_ADMIN_PASSWORD }} EOF - name: Set up SSH From 747828ec0a00e6568043704721e2ee2368fde706 Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 21:36:43 +0900 Subject: [PATCH 27/59] fix: fix env secret MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit env 파일 작성방식 수정 --- .github/workflows/docker-cd.yml | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index d0842a38..31abdcc8 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -21,21 +21,19 @@ jobs: - name: set up .env run: | - cat < .env - JWT_SECRET_KEY=${{ env.JWT_SECRET_KEY }} - USER_DB_ROOT_PASSWORD=${{ env.USER_DB_ROOT_PASSWORD }} - USER_DB_ID=${{ env.USER_DB_ID }} - USER_DB_PASSWORD=${{ env.USER_DB_PASSWORD }} - RESERVATION_DB_ROOT_PASSWORD=${{ env.RESERVATION_DB_ROOT_PASSWORD }} - RESERVATION_DB_ID=${{ env.RESERVATION_DB_ID }} - RESERVATION_DB_PASSWORD=${{ env.RESERVATION_DB_PASSWORD }} - FLIGHT_DB_ID=${{ env.FLIGHT_DB_ID }} - FLIGHT_DB_PASSWORD=${{ env.FLIGHT_DB_PASSWORD }} - AMADEUS_CLIENT_ID=${{ env.AMADEUS_CLIENT_ID }} - AMADEUS_CLIENT_SECRET=${{ env.AMADEUS_CLIENT_SECRET }} - GF_SECURITY_ADMIN_USER=${{ env.GF_SECURITY_ADMIN_USER }} - GF_SECURITY_ADMIN_PASSWORD=${{ env.GF_SECURITY_ADMIN_PASSWORD }} - EOF + echo "JWT_SECRET_KEY=${{ env.JWT_SECRET_KEY }}" >> .env + echo "USER_DB_ROOT_PASSWORD=${{ env.USER_DB_ROOT_PASSWORD }}" >> .env + echo "USER_DB_ID=${{ env.USER_DB_ID }}" >> .env + echo "USER_DB_PASSWORD=${{ env.USER_DB_PASSWORD }}" >> .env + echo "RESERVATION_DB_ROOT_PASSWORD=${{ env.RESERVATION_DB_ROOT_PASSWORD }}" >> .env + echo "RESERVATION_DB_ID=${{ env.RESERVATION_DB_ID }}" >> .env + echo "RESERVATION_DB_PASSWORD=${{ env.RESERVATION_DB_PASSWORD }}" >> .env + echo "FLIGHT_DB_ID=${{ env.FLIGHT_DB_ID }}" >> .env + echo "FLIGHT_DB_PASSWORD=${{ env.FLIGHT_DB_PASSWORD }}" >> .env + echo "AMADEUS_CLIENT_ID=${{ env.AMADEUS_CLIENT_ID }}" >> .env + echo "AMADEUS_CLIENT_SECRET=${{ env.AMADEUS_CLIENT_SECRET }}" >> .env + echo "GF_SECURITY_ADMIN_USER=${{ env.GF_SECURITY_ADMIN_USER }}" >> .env + echo "GF_SECURITY_ADMIN_PASSWORD=${{ env.GF_SECURITY_ADMIN_PASSWORD }}" >> .env - name: Set up SSH run: | From 9d3042aead1012346505aae337b9dd0f4f2450a5 Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 21:46:16 +0900 Subject: [PATCH 28/59] fix: fix env secret MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit env 파일 작성방식 수정 --- .github/workflows/docker-cd.yml | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index 31abdcc8..48537a67 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -13,6 +13,7 @@ on: jobs: deploy: # if: ${{ github.event.workflow_run.conclusion == 'success' }} + environment: oneul-tanda runs-on: ubuntu-latest steps: @@ -21,19 +22,21 @@ jobs: - name: set up .env run: | - echo "JWT_SECRET_KEY=${{ env.JWT_SECRET_KEY }}" >> .env - echo "USER_DB_ROOT_PASSWORD=${{ env.USER_DB_ROOT_PASSWORD }}" >> .env - echo "USER_DB_ID=${{ env.USER_DB_ID }}" >> .env - echo "USER_DB_PASSWORD=${{ env.USER_DB_PASSWORD }}" >> .env - echo "RESERVATION_DB_ROOT_PASSWORD=${{ env.RESERVATION_DB_ROOT_PASSWORD }}" >> .env - echo "RESERVATION_DB_ID=${{ env.RESERVATION_DB_ID }}" >> .env - echo "RESERVATION_DB_PASSWORD=${{ env.RESERVATION_DB_PASSWORD }}" >> .env - echo "FLIGHT_DB_ID=${{ env.FLIGHT_DB_ID }}" >> .env - echo "FLIGHT_DB_PASSWORD=${{ env.FLIGHT_DB_PASSWORD }}" >> .env - echo "AMADEUS_CLIENT_ID=${{ env.AMADEUS_CLIENT_ID }}" >> .env - echo "AMADEUS_CLIENT_SECRET=${{ env.AMADEUS_CLIENT_SECRET }}" >> .env - echo "GF_SECURITY_ADMIN_USER=${{ env.GF_SECURITY_ADMIN_USER }}" >> .env - echo "GF_SECURITY_ADMIN_PASSWORD=${{ env.GF_SECURITY_ADMIN_PASSWORD }}" >> .env + cat < .env + JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} + USER_DB_ROOT_PASSWORD=${{ secrets.USER_DB_ROOT_PASSWORD }} + USER_DB_ID=${{ secrets.USER_DB_ID }} + USER_DB_PASSWORD=${{ secrets.USER_DB_PASSWORD }} + RESERVATION_DB_ROOT_PASSWORD=${{ secrets.RESERVATION_DB_ROOT_PASSWORD }} + RESERVATION_DB_ID=${{ secrets.RESERVATION_DB_ID }} + RESERVATION_DB_PASSWORD=${{ secrets.RESERVATION_DB_PASSWORD }} + FLIGHT_DB_ID=${{ secrets.FLIGHT_DB_ID }} + FLIGHT_DB_PASSWORD=${{ secrets.FLIGHT_DB_PASSWORD }} + AMADEUS_CLIENT_ID=${{ secrets.AMADEUS_CLIENT_ID }} + AMADEUS_CLIENT_SECRET=${{ secrets.AMADEUS_CLIENT_SECRET }} + GF_SECURITY_ADMIN_USER=${{ secrets.GF_SECURITY_ADMIN_USER }} + GF_SECURITY_ADMIN_PASSWORD=${{ secrets.GF_SECURITY_ADMIN_PASSWORD }} + EOF - name: Set up SSH run: | From 24525eb49943f7ff58cd3cbb3ef9364001fd43d6 Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 22:08:55 +0900 Subject: [PATCH 29/59] fix: fix docker-compose-server.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit restart 삭제, application.yml 수정 --- docker-compose-server.yml | 1 - user-service/src/main/resources/application.yml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index 60f31388..c3c06010 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -37,7 +37,6 @@ services: user-db: image: mysql:8.0 container_name: oneultanda-user-db - restart: always environment: - MYSQL_ROOT_PASSWORD=${USER_DB_ROOT_PASSWORD} - MYSQL_DATABASE=user_db diff --git a/user-service/src/main/resources/application.yml b/user-service/src/main/resources/application.yml index 9d2c8b26..b0a50de5 100644 --- a/user-service/src/main/resources/application.yml +++ b/user-service/src/main/resources/application.yml @@ -3,7 +3,7 @@ spring: name: user-service datasource: - url: jdbc:mysql://oneultanda-user-db:3309/user_db + url: jdbc:mysql://oneultanda-user-db:3306/user_db username: admin password: 1234 driver-class-name: com.mysql.cj.jdbc.Driver From 29b6d4c6844565941cb9b6c846e9763a025fa1a2 Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 22:34:02 +0900 Subject: [PATCH 30/59] fix: fix user application yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 포트번호 수정을 ci로 다시 반영후 다시 cd 진행 --- .github/workflows/docker-cd.yml | 131 ++++++++++++++++---------------- .github/workflows/docker-ci.yml | 55 +++++++++++++- 2 files changed, 120 insertions(+), 66 deletions(-) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml index 48537a67..1a27d028 100644 --- a/.github/workflows/docker-cd.yml +++ b/.github/workflows/docker-cd.yml @@ -1,65 +1,66 @@ -name: Deploy to aws via SSH - -on: -# workflow_run: -# workflows: -# - "Build and Push Docker Images" -# types: -# - completed - push: - branches: - - Ci/#91-cicd-gitaction - -jobs: - deploy: -# if: ${{ github.event.workflow_run.conclusion == 'success' }} - environment: oneul-tanda - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: set up .env - run: | - cat < .env - JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} - USER_DB_ROOT_PASSWORD=${{ secrets.USER_DB_ROOT_PASSWORD }} - USER_DB_ID=${{ secrets.USER_DB_ID }} - USER_DB_PASSWORD=${{ secrets.USER_DB_PASSWORD }} - RESERVATION_DB_ROOT_PASSWORD=${{ secrets.RESERVATION_DB_ROOT_PASSWORD }} - RESERVATION_DB_ID=${{ secrets.RESERVATION_DB_ID }} - RESERVATION_DB_PASSWORD=${{ secrets.RESERVATION_DB_PASSWORD }} - FLIGHT_DB_ID=${{ secrets.FLIGHT_DB_ID }} - FLIGHT_DB_PASSWORD=${{ secrets.FLIGHT_DB_PASSWORD }} - AMADEUS_CLIENT_ID=${{ secrets.AMADEUS_CLIENT_ID }} - AMADEUS_CLIENT_SECRET=${{ secrets.AMADEUS_CLIENT_SECRET }} - GF_SECURITY_ADMIN_USER=${{ secrets.GF_SECURITY_ADMIN_USER }} - GF_SECURITY_ADMIN_PASSWORD=${{ secrets.GF_SECURITY_ADMIN_PASSWORD }} - EOF - - - name: Set up SSH - run: | - mkdir -p ~/.ssh - echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - ssh-keyscan -H ${{ secrets.INSTANCE_IP }} >> ~/.ssh/known_hosts - - - name: Make sure remote directory exists - run: | - ssh ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} "mkdir -p /home/${{ secrets.SSH_USER }}/app" - - - name: Send docker-compose files and .env - run: | - scp ./docker-compose-server.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/docker-compose.yml - scp ./.env ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ - scp ./prometheus.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ - - - name: Run docker compose on server - run: | - ssh -tt ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} " - cd /home/${{ secrets.SSH_USER }}/app && - docker compose pull && - docker compose down && - docker compose up -d - " \ No newline at end of file +#name: Deploy to aws via SSH +# +#on: +## workflow_run: +## workflows: +## - "Build and Push Docker Images" +## types: +## - completed +# push: +# branches: +## - Ci/#91-cicd-gitaction +# - main +# +#jobs: +# deploy: +## if: ${{ github.event.workflow_run.conclusion == 'success' }} +# environment: oneul-tanda +# runs-on: ubuntu-latest +# +# steps: +# - name: Checkout code +# uses: actions/checkout@v3 +# +# - name: set up .env +# run: | +# cat < .env +# JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} +# USER_DB_ROOT_PASSWORD=${{ secrets.USER_DB_ROOT_PASSWORD }} +# USER_DB_ID=${{ secrets.USER_DB_ID }} +# USER_DB_PASSWORD=${{ secrets.USER_DB_PASSWORD }} +# RESERVATION_DB_ROOT_PASSWORD=${{ secrets.RESERVATION_DB_ROOT_PASSWORD }} +# RESERVATION_DB_ID=${{ secrets.RESERVATION_DB_ID }} +# RESERVATION_DB_PASSWORD=${{ secrets.RESERVATION_DB_PASSWORD }} +# FLIGHT_DB_ID=${{ secrets.FLIGHT_DB_ID }} +# FLIGHT_DB_PASSWORD=${{ secrets.FLIGHT_DB_PASSWORD }} +# AMADEUS_CLIENT_ID=${{ secrets.AMADEUS_CLIENT_ID }} +# AMADEUS_CLIENT_SECRET=${{ secrets.AMADEUS_CLIENT_SECRET }} +# GF_SECURITY_ADMIN_USER=${{ secrets.GF_SECURITY_ADMIN_USER }} +# GF_SECURITY_ADMIN_PASSWORD=${{ secrets.GF_SECURITY_ADMIN_PASSWORD }} +# EOF +# +# - name: Set up SSH +# run: | +# mkdir -p ~/.ssh +# echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa +# chmod 600 ~/.ssh/id_rsa +# ssh-keyscan -H ${{ secrets.INSTANCE_IP }} >> ~/.ssh/known_hosts +# +# - name: Make sure remote directory exists +# run: | +# ssh ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} "mkdir -p /home/${{ secrets.SSH_USER }}/app" +# +# - name: Send docker-compose files and .env +# run: | +# scp ./docker-compose-server.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/docker-compose.yml +# scp ./.env ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ +# scp ./prometheus.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ +# +# - name: Run docker compose on server +# run: | +# ssh -tt ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} " +# cd /home/${{ secrets.SSH_USER }}/app && +# docker compose pull && +# docker compose down && +# docker compose up -d +# " \ No newline at end of file diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml index 2a62d6e6..ff8a3508 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci.yml @@ -3,7 +3,7 @@ name: Build and Push Docker Images on: push: branches: -# - Ci/#91-cicd-gitaction + - Ci/#91-cicd-gitaction - main # todo: 추후 main으로 수정할 것 @@ -38,3 +38,56 @@ jobs: - name: Push Docker Image run: | docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.service }}:latest + +# 추후 분리가 필요할 수 있음 + deploy: + environment: oneul-tanda + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: set up .env + run: | + cat < .env + JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} + USER_DB_ROOT_PASSWORD=${{ secrets.USER_DB_ROOT_PASSWORD }} + USER_DB_ID=${{ secrets.USER_DB_ID }} + USER_DB_PASSWORD=${{ secrets.USER_DB_PASSWORD }} + RESERVATION_DB_ROOT_PASSWORD=${{ secrets.RESERVATION_DB_ROOT_PASSWORD }} + RESERVATION_DB_ID=${{ secrets.RESERVATION_DB_ID }} + RESERVATION_DB_PASSWORD=${{ secrets.RESERVATION_DB_PASSWORD }} + FLIGHT_DB_ID=${{ secrets.FLIGHT_DB_ID }} + FLIGHT_DB_PASSWORD=${{ secrets.FLIGHT_DB_PASSWORD }} + AMADEUS_CLIENT_ID=${{ secrets.AMADEUS_CLIENT_ID }} + AMADEUS_CLIENT_SECRET=${{ secrets.AMADEUS_CLIENT_SECRET }} + GF_SECURITY_ADMIN_USER=${{ secrets.GF_SECURITY_ADMIN_USER }} + GF_SECURITY_ADMIN_PASSWORD=${{ secrets.GF_SECURITY_ADMIN_PASSWORD }} + EOF + + - name: Set up SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -H ${{ secrets.INSTANCE_IP }} >> ~/.ssh/known_hosts + + - name: Make sure remote directory exists + run: | + ssh ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} "mkdir -p /home/${{ secrets.SSH_USER }}/app" + + - name: Send docker-compose files and .env + run: | + scp ./docker-compose-server.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/docker-compose.yml + scp ./.env ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ + scp ./prometheus.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ + + - name: Run docker compose on server + run: | + ssh -tt ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} " + cd /home/${{ secrets.SSH_USER }}/app && + docker compose pull && + docker compose down && + docker compose up -d + " \ No newline at end of file From 4f664af86a666c729aaadf1cb87130db321b5a3b Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 22:36:07 +0900 Subject: [PATCH 31/59] fix: fix user application yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 포트번호 수정을 ci로 다시 반영후 다시 cd 진행 --- .github/workflows/docker-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci.yml index ff8a3508..fd2553ef 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci.yml @@ -41,6 +41,7 @@ jobs: # 추후 분리가 필요할 수 있음 deploy: + needs: build-and-push environment: oneul-tanda runs-on: ubuntu-latest From 087c9bcf46e60834743c4b52e55ed8cc6bd597cf Mon Sep 17 00:00:00 2001 From: kss Date: Wed, 30 Apr 2025 23:53:00 +0900 Subject: [PATCH 32/59] fix: fix user application yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit db 연결 에러... --- user-service/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user-service/src/main/resources/application.yml b/user-service/src/main/resources/application.yml index b0a50de5..f77cf34e 100644 --- a/user-service/src/main/resources/application.yml +++ b/user-service/src/main/resources/application.yml @@ -3,7 +3,7 @@ spring: name: user-service datasource: - url: jdbc:mysql://oneultanda-user-db:3306/user_db + url: jdbc:mysql://user-db:3306/user_db username: admin password: 1234 driver-class-name: com.mysql.cj.jdbc.Driver From e0f45819f618b37aa00b9e769bfaddd82487203e Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 01:19:54 +0900 Subject: [PATCH 33/59] fix: fix user application yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit db 연결 에러... local에서 되는걸 확인했지만 왜 되는걸까요? --- user-service/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user-service/src/main/resources/application.yml b/user-service/src/main/resources/application.yml index f77cf34e..b0a50de5 100644 --- a/user-service/src/main/resources/application.yml +++ b/user-service/src/main/resources/application.yml @@ -3,7 +3,7 @@ spring: name: user-service datasource: - url: jdbc:mysql://user-db:3306/user_db + url: jdbc:mysql://oneultanda-user-db:3306/user_db username: admin password: 1234 driver-class-name: com.mysql.cj.jdbc.Driver From 7f0f3a378b387ac37132b2bb546a891f4f821a1d Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 01:52:49 +0900 Subject: [PATCH 34/59] fix: docker-compose-server.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 추정 원인: 각 데이터가 root volume에 저장되면서 용량 부족으로 멈춘다...? --- docker-compose-server.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index c3c06010..5c09e7ae 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -45,7 +45,7 @@ services: ports: - "3309:3306" volumes: - - user-mysql-data:/var/lib/mysql + - /data/user-mysql-data:/var/lib/mysql flight-service: image: duckori/flight-service:latest @@ -74,7 +74,7 @@ services: ports: - "5433:5432" volumes: - - flight-postgres-data:/var/lib/postgresql/data + - /data/flight-postgres-data:/var/lib/postgresql/data - ./init-scripts:/docker-entrypoint-initdb.d reservation-service: @@ -102,7 +102,7 @@ services: ports: - "3307:3306" volumes: - - reservation-mysql-data:/var/lib/mysql + - /data/reservation-mysql-data:/var/lib/mysql queue-service: image: duckori/queue-service:latest @@ -169,7 +169,7 @@ services: ports: - "3000:3000" volumes: - - grafana-storage:/var/lib/grafana + - /data/grafana-storage:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning environment: - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} @@ -184,7 +184,7 @@ services: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - - prometheus_data:/prometheus + - /data/prometheus-data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' From 4e99733864daccdd6d7913f6f04651c83ee9a3ba Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 12:11:09 +0900 Subject: [PATCH 35/59] fix: dev pull update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 가장 최신의 dev를 기준으로 다시 테스트 진행 --- .github/workflows/docker-cd.yml | 66 ------------------- .../{docker-ci.yml => docker-ci-cd.yml} | 12 ++-- 2 files changed, 8 insertions(+), 70 deletions(-) delete mode 100644 .github/workflows/docker-cd.yml rename .github/workflows/{docker-ci.yml => docker-ci-cd.yml} (91%) diff --git a/.github/workflows/docker-cd.yml b/.github/workflows/docker-cd.yml deleted file mode 100644 index 1a27d028..00000000 --- a/.github/workflows/docker-cd.yml +++ /dev/null @@ -1,66 +0,0 @@ -#name: Deploy to aws via SSH -# -#on: -## workflow_run: -## workflows: -## - "Build and Push Docker Images" -## types: -## - completed -# push: -# branches: -## - Ci/#91-cicd-gitaction -# - main -# -#jobs: -# deploy: -## if: ${{ github.event.workflow_run.conclusion == 'success' }} -# environment: oneul-tanda -# runs-on: ubuntu-latest -# -# steps: -# - name: Checkout code -# uses: actions/checkout@v3 -# -# - name: set up .env -# run: | -# cat < .env -# JWT_SECRET_KEY=${{ secrets.JWT_SECRET_KEY }} -# USER_DB_ROOT_PASSWORD=${{ secrets.USER_DB_ROOT_PASSWORD }} -# USER_DB_ID=${{ secrets.USER_DB_ID }} -# USER_DB_PASSWORD=${{ secrets.USER_DB_PASSWORD }} -# RESERVATION_DB_ROOT_PASSWORD=${{ secrets.RESERVATION_DB_ROOT_PASSWORD }} -# RESERVATION_DB_ID=${{ secrets.RESERVATION_DB_ID }} -# RESERVATION_DB_PASSWORD=${{ secrets.RESERVATION_DB_PASSWORD }} -# FLIGHT_DB_ID=${{ secrets.FLIGHT_DB_ID }} -# FLIGHT_DB_PASSWORD=${{ secrets.FLIGHT_DB_PASSWORD }} -# AMADEUS_CLIENT_ID=${{ secrets.AMADEUS_CLIENT_ID }} -# AMADEUS_CLIENT_SECRET=${{ secrets.AMADEUS_CLIENT_SECRET }} -# GF_SECURITY_ADMIN_USER=${{ secrets.GF_SECURITY_ADMIN_USER }} -# GF_SECURITY_ADMIN_PASSWORD=${{ secrets.GF_SECURITY_ADMIN_PASSWORD }} -# EOF -# -# - name: Set up SSH -# run: | -# mkdir -p ~/.ssh -# echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa -# chmod 600 ~/.ssh/id_rsa -# ssh-keyscan -H ${{ secrets.INSTANCE_IP }} >> ~/.ssh/known_hosts -# -# - name: Make sure remote directory exists -# run: | -# ssh ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} "mkdir -p /home/${{ secrets.SSH_USER }}/app" -# -# - name: Send docker-compose files and .env -# run: | -# scp ./docker-compose-server.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/docker-compose.yml -# scp ./.env ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ -# scp ./prometheus.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ -# -# - name: Run docker compose on server -# run: | -# ssh -tt ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} " -# cd /home/${{ secrets.SSH_USER }}/app && -# docker compose pull && -# docker compose down && -# docker compose up -d -# " \ No newline at end of file diff --git a/.github/workflows/docker-ci.yml b/.github/workflows/docker-ci-cd.yml similarity index 91% rename from .github/workflows/docker-ci.yml rename to .github/workflows/docker-ci-cd.yml index fd2553ef..18faa784 100644 --- a/.github/workflows/docker-ci.yml +++ b/.github/workflows/docker-ci-cd.yml @@ -1,4 +1,4 @@ -name: Build and Push Docker Images +name: CI CD on: push: @@ -8,7 +8,7 @@ on: # todo: 추후 main으로 수정할 것 jobs: - build-and-push: + CI: runs-on: ubuntu-latest strategy: @@ -20,6 +20,7 @@ jobs: - flight-service - reservation-service - queue-service + - payment-service steps: - name: Checkout source @@ -40,8 +41,8 @@ jobs: docker push ${{ secrets.DOCKERHUB_USERNAME }}/${{ matrix.service }}:latest # 추후 분리가 필요할 수 있음 - deploy: - needs: build-and-push + CD: + needs: CI environment: oneul-tanda runs-on: ubuntu-latest @@ -65,6 +66,9 @@ jobs: AMADEUS_CLIENT_SECRET=${{ secrets.AMADEUS_CLIENT_SECRET }} GF_SECURITY_ADMIN_USER=${{ secrets.GF_SECURITY_ADMIN_USER }} GF_SECURITY_ADMIN_PASSWORD=${{ secrets.GF_SECURITY_ADMIN_PASSWORD }} + PAYMENT_DB_USERNAME=${{ secrets.PAYMENT_DB_USERNAME }} + PAYMENT_DB_ROOT_PASSWORD=${{ secrets.PAYMENT_DB_ROOT_PASSWORD }} + PAYMENT_DB_PASSWORD=${{ secrets.PAYMENT_DB_PASSWORD }} EOF - name: Set up SSH From 617fec52495bc5d73f0069ed93617b122b16d630 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 12:23:08 +0900 Subject: [PATCH 36/59] fix: uuid error uuid error --- .../paymentservice/application/dto/PaymentResponseDto.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/payment-service/src/main/java/com/sparta/paymentservice/application/dto/PaymentResponseDto.java b/payment-service/src/main/java/com/sparta/paymentservice/application/dto/PaymentResponseDto.java index eb1d4c8e..42aa96b4 100644 --- a/payment-service/src/main/java/com/sparta/paymentservice/application/dto/PaymentResponseDto.java +++ b/payment-service/src/main/java/com/sparta/paymentservice/application/dto/PaymentResponseDto.java @@ -23,7 +23,7 @@ public class PaymentResponseDto { public static PaymentResponseDto toDto(Payment payment) { return PaymentResponseDto.builder() .impUid(payment.getImpUid()) - .reservationId(payment.getMerchantUid()) + .reservationId(UUID.fromString(payment.getMerchantUid())) .totalPrice(payment.getAmount()) .status(payment.getStatus()) .build(); From 489b1904d3036ab3e9118fff36704666f47a4ec3 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 13:28:27 +0900 Subject: [PATCH 37/59] fix: /data delete, payment fix /data and add payment --- docker-compose-server.yml | 39 ++++++++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index 5c09e7ae..28856768 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -45,7 +45,7 @@ services: ports: - "3309:3306" volumes: - - /data/user-mysql-data:/var/lib/mysql + - user-mysql-data:/var/lib/mysql flight-service: image: duckori/flight-service:latest @@ -74,7 +74,7 @@ services: ports: - "5433:5432" volumes: - - /data/flight-postgres-data:/var/lib/postgresql/data + - flight-postgres-data:/var/lib/postgresql/data - ./init-scripts:/docker-entrypoint-initdb.d reservation-service: @@ -102,7 +102,7 @@ services: ports: - "3307:3306" volumes: - - /data/reservation-mysql-data:/var/lib/mysql + - reservation-mysql-data:/var/lib/mysql queue-service: image: duckori/queue-service:latest @@ -125,6 +125,35 @@ services: - "6379:6379" restart: always + payment-service: + image: duckori/payment-service:latest + container_name: oneultanda-payment-service + volumes: + - ./payment-service:/app/payment-service + ports: + - "19093:19093" + env_file: + - .env + depends_on: + - payments-db + - eureka-server + + payments-db: + image: mysql:8.0 + container_name: oneultanda-payment-db + environment: + - MYSQL_ROOT_PASSWORD=${PAYMENT_DB_ROOT_PASSWORD} + - MYSQL_DATABASE=payments_db + - MYSQL_USER=${PAYMENT_DB_USERNAME} + - MYSQL_PASSWORD=${PAYMENT_DB_PASSWORD} + - IMPORT_API_KEY=${IMPORT_API_KEY} + - IMPORT_API_SECRET_KEY=${IMPORT_API_SECRET_KEY} + ports: + - "3308:3306" + volumes: + - payments-mysql-data:/var/lib/mysql + + zookeeper: image: wurstmeister/zookeeper:latest platform: linux/amd64 @@ -169,7 +198,7 @@ services: ports: - "3000:3000" volumes: - - /data/grafana-storage:/var/lib/grafana + - grafana-storage:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning environment: - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} @@ -184,7 +213,7 @@ services: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - - /data/prometheus-data:/prometheus + - prometheus-data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' From 21f951722b4dfeac5fa824c75c63d8ac5b6dd559 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 13:32:20 +0900 Subject: [PATCH 38/59] fix: /data delete, payment fix /data and add payment --- .github/workflows/docker-ci-cd.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/docker-ci-cd.yml b/.github/workflows/docker-ci-cd.yml index 18faa784..e3dfeaf5 100644 --- a/.github/workflows/docker-ci-cd.yml +++ b/.github/workflows/docker-ci-cd.yml @@ -69,6 +69,8 @@ jobs: PAYMENT_DB_USERNAME=${{ secrets.PAYMENT_DB_USERNAME }} PAYMENT_DB_ROOT_PASSWORD=${{ secrets.PAYMENT_DB_ROOT_PASSWORD }} PAYMENT_DB_PASSWORD=${{ secrets.PAYMENT_DB_PASSWORD }} + IMPORT_API_KEY=${{ secrets.IMPORT_API_KEY }} + IMPORT_API_SECRET_KEY=${{ secrets.IMPORT_API_SECRET_KEY }} EOF - name: Set up SSH From 71d000e8ad6179a23969ed47e2690593917831e8 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 13:35:33 +0900 Subject: [PATCH 39/59] fix: /data delete, payment fix /data and add payment --- docker-compose-server.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index 28856768..b23ff4b0 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -213,7 +213,7 @@ services: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - - prometheus-data:/prometheus + - prometheus_data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' @@ -221,5 +221,6 @@ volumes: user-mysql-data: reservation-mysql-data: flight-postgres-data: + payments-mysql-data: prometheus_data: grafana-storage: From bc69e28e1c58fce9dad5dcd60e05b0c8a6999c9a Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 14:12:36 +0900 Subject: [PATCH 40/59] fix: /data delete, payment fix /data and add payment --- docker-compose-server.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index b23ff4b0..6b47db98 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -44,6 +44,7 @@ services: - MYSQL_PASSWORD=${USER_DB_PASSWORD} ports: - "3309:3306" + command: --tmpdir=/var/tmp volumes: - user-mysql-data:/var/lib/mysql @@ -101,6 +102,7 @@ services: - MYSQL_PASSWORD=${RESERVATION_DB_PASSWORD} ports: - "3307:3306" + command: --tmpdir=/var/tmp volumes: - reservation-mysql-data:/var/lib/mysql @@ -150,6 +152,7 @@ services: - IMPORT_API_SECRET_KEY=${IMPORT_API_SECRET_KEY} ports: - "3308:3306" + command: --tmpdir=/var/tmp volumes: - payments-mysql-data:/var/lib/mysql From e9c1dc1aa08e39291d1237cb03bdcc7f09cdcbe6 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 14:19:06 +0900 Subject: [PATCH 41/59] fix: /data delete, payment fix /data and add payment --- docker-compose-server.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index 6b47db98..e5ced6ed 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -44,9 +44,11 @@ services: - MYSQL_PASSWORD=${USER_DB_PASSWORD} ports: - "3309:3306" - command: --tmpdir=/var/tmp volumes: - user-mysql-data:/var/lib/mysql + tmpfs: + - /tmp + flight-service: image: duckori/flight-service:latest @@ -102,9 +104,11 @@ services: - MYSQL_PASSWORD=${RESERVATION_DB_PASSWORD} ports: - "3307:3306" - command: --tmpdir=/var/tmp volumes: - reservation-mysql-data:/var/lib/mysql + tmpfs: + - /tmp + queue-service: image: duckori/queue-service:latest @@ -152,9 +156,11 @@ services: - IMPORT_API_SECRET_KEY=${IMPORT_API_SECRET_KEY} ports: - "3308:3306" - command: --tmpdir=/var/tmp volumes: - payments-mysql-data:/var/lib/mysql + tmpfs: + - /tmp + zookeeper: From 1784648e39a21da5275e6010ff136245cc190d92 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 14:23:47 +0900 Subject: [PATCH 42/59] fix: /data delete, payment fix /data and add payment --- docker-compose-server.yml | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index e5ced6ed..6b47db98 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -44,11 +44,9 @@ services: - MYSQL_PASSWORD=${USER_DB_PASSWORD} ports: - "3309:3306" + command: --tmpdir=/var/tmp volumes: - user-mysql-data:/var/lib/mysql - tmpfs: - - /tmp - flight-service: image: duckori/flight-service:latest @@ -104,11 +102,9 @@ services: - MYSQL_PASSWORD=${RESERVATION_DB_PASSWORD} ports: - "3307:3306" + command: --tmpdir=/var/tmp volumes: - reservation-mysql-data:/var/lib/mysql - tmpfs: - - /tmp - queue-service: image: duckori/queue-service:latest @@ -156,11 +152,9 @@ services: - IMPORT_API_SECRET_KEY=${IMPORT_API_SECRET_KEY} ports: - "3308:3306" + command: --tmpdir=/var/tmp volumes: - payments-mysql-data:/var/lib/mysql - tmpfs: - - /tmp - zookeeper: From f9ab120ebd005f6ebf3d836f7e93c11f24b33aba Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 14:29:30 +0900 Subject: [PATCH 43/59] fix: /data delete, payment fix /data and add payment --- docker-compose-server.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index 6b47db98..58127448 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -44,9 +44,10 @@ services: - MYSQL_PASSWORD=${USER_DB_PASSWORD} ports: - "3309:3306" - command: --tmpdir=/var/tmp + command: --tmpdir=/var/lib/mysqltmp volumes: - user-mysql-data:/var/lib/mysql + - user-mysql-tmp:/var/lib/mysqltmp flight-service: image: duckori/flight-service:latest @@ -102,9 +103,10 @@ services: - MYSQL_PASSWORD=${RESERVATION_DB_PASSWORD} ports: - "3307:3306" - command: --tmpdir=/var/tmp + command: --tmpdir=/var/lib/mysqltmp volumes: - reservation-mysql-data:/var/lib/mysql + - reservation-mysql-tmp:/var/lib/mysqltmp queue-service: image: duckori/queue-service:latest @@ -152,9 +154,10 @@ services: - IMPORT_API_SECRET_KEY=${IMPORT_API_SECRET_KEY} ports: - "3308:3306" - command: --tmpdir=/var/tmp + command: --tmpdir=/var/lib/mysqltmp volumes: - payments-mysql-data:/var/lib/mysql + - payments-mysql-tmp:/var/lib/mysqltmp zookeeper: @@ -225,5 +228,8 @@ volumes: reservation-mysql-data: flight-postgres-data: payments-mysql-data: + user-mysql-tmp: + reservation-mysql-tmp: + payment-mysql-tmp: prometheus_data: grafana-storage: From 8639e4c73812268f192728c0f1465d6d0ffcbf2a Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 14:33:45 +0900 Subject: [PATCH 44/59] fix: /data delete, payment fix /data and add payment --- docker-compose-server.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index 58127448..1d2a6f98 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -230,6 +230,6 @@ volumes: payments-mysql-data: user-mysql-tmp: reservation-mysql-tmp: - payment-mysql-tmp: + payments-mysql-tmp: prometheus_data: grafana-storage: From cfc7af03a30c8f46cb122e4c1975d4ad83c0c903 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 15:25:07 +0900 Subject: [PATCH 45/59] fix: /data delete, payment fix /data and add payment --- docker-compose-server.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index 1d2a6f98..cdb44092 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -45,6 +45,7 @@ services: ports: - "3309:3306" command: --tmpdir=/var/lib/mysqltmp + entrypoint: ["/bin/bash", "-c", "mkdir -p /var/lib/mysqltmp && chown -R mysql:mysql /var/lib/mysqltmp && exec docker-entrypoint.sh --tmpdir=/var/lib/mysqltmp"] volumes: - user-mysql-data:/var/lib/mysql - user-mysql-tmp:/var/lib/mysqltmp From ce3a285336b788f57486acb7cf619f7a88da63c5 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 16:39:03 +0900 Subject: [PATCH 46/59] refactor: mysql -> postgresql MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mysq의 경우 tmp를 통해 임시db를 만들면서 db가 생성되는데 ubuntu에서 db생성시 container 내부에서 mysql 이라는 임시 유저를 생성해 tmp에 접근하려 하지만 ubuntu 환경에서는 tmp 디렉토리에 접근하는 권한 설정이 되어있어 접근하지 못하고 정상적으로 db가 실행되지 못함. --- .github/workflows/docker-ci-cd.yml | 1 + docker-compose-server.yml | 63 +++++++------------ payment-service/build.gradle | 6 +- .../src/main/resources/application.yml | 11 +++- reservation-service/build.gradle | 3 +- .../src/main/resources/application.yml | 10 ++- user-service/build.gradle | 4 +- .../src/main/resources/application.yml | 10 ++- 8 files changed, 59 insertions(+), 49 deletions(-) diff --git a/.github/workflows/docker-ci-cd.yml b/.github/workflows/docker-ci-cd.yml index e3dfeaf5..ba1b9e43 100644 --- a/.github/workflows/docker-ci-cd.yml +++ b/.github/workflows/docker-ci-cd.yml @@ -9,6 +9,7 @@ on: jobs: CI: + environment: oneul-tanda runs-on: ubuntu-latest strategy: diff --git a/docker-compose-server.yml b/docker-compose-server.yml index cdb44092..0504a470 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -35,20 +35,16 @@ services: - redis user-db: - image: mysql:8.0 + image: postgres:16.3 container_name: oneultanda-user-db environment: - - MYSQL_ROOT_PASSWORD=${USER_DB_ROOT_PASSWORD} - - MYSQL_DATABASE=user_db - - MYSQL_USER=${USER_DB_ID} - - MYSQL_PASSWORD=${USER_DB_PASSWORD} - ports: - - "3309:3306" - command: --tmpdir=/var/lib/mysqltmp - entrypoint: ["/bin/bash", "-c", "mkdir -p /var/lib/mysqltmp && chown -R mysql:mysql /var/lib/mysqltmp && exec docker-entrypoint.sh --tmpdir=/var/lib/mysqltmp"] + - POSTGRES_USER=${USER_DB_ID} + - POSTGRES_DB=user_db + - POSTGRES_PASSWORD=${USER_DB_PASSWORD} + ports: + - "5432:5432" volumes: - - user-mysql-data:/var/lib/mysql - - user-mysql-tmp:/var/lib/mysqltmp + - user-postgres-data:/var/lib/postgresql/data flight-service: image: duckori/flight-service:latest @@ -95,19 +91,16 @@ services: - eureka-server reservation-db: - image: mysql:8.0 + image: postgres:16.3 container_name: oneultanda-reservation-db environment: - - MYSQL_ROOT_PASSWORD=${RESERVATION_DB_ROOT_PASSWORD} - - MYSQL_DATABASE=reservation_db - - MYSQL_USER=${RESERVATION_DB_ID} - - MYSQL_PASSWORD=${RESERVATION_DB_PASSWORD} + - POSTGRES_USER=${RESERVATION_DB_ID} + - POSTGRES_DB=reservation_db + - POSTGRES_PASSWORD=${RESERVATION_DB_PASSWORD} ports: - - "3307:3306" - command: --tmpdir=/var/lib/mysqltmp + - "5434:5432" volumes: - - reservation-mysql-data:/var/lib/mysql - - reservation-mysql-tmp:/var/lib/mysqltmp + - reservation-postgres-data:/var/lib/postgresql/data queue-service: image: duckori/queue-service:latest @@ -144,21 +137,16 @@ services: - eureka-server payments-db: - image: mysql:8.0 - container_name: oneultanda-payment-db + image: postgres:16.3 + container_name: oneultanda-payments-db environment: - - MYSQL_ROOT_PASSWORD=${PAYMENT_DB_ROOT_PASSWORD} - - MYSQL_DATABASE=payments_db - - MYSQL_USER=${PAYMENT_DB_USERNAME} - - MYSQL_PASSWORD=${PAYMENT_DB_PASSWORD} - - IMPORT_API_KEY=${IMPORT_API_KEY} - - IMPORT_API_SECRET_KEY=${IMPORT_API_SECRET_KEY} - ports: - - "3308:3306" - command: --tmpdir=/var/lib/mysqltmp + - POSTGRES_USER=${PAYMENTS_DB_USERNAME} + - POSTGRES_DB=payments_db + - POSTGRES_PASSWORD=${PAYMENTS_DB_PASSWORD} + ports: + - "5435:5432" volumes: - - payments-mysql-data:/var/lib/mysql - - payments-mysql-tmp:/var/lib/mysqltmp + - payments-postgres-data:/var/lib/postgresql/data zookeeper: @@ -225,12 +213,9 @@ services: - '--config.file=/etc/prometheus/prometheus.yml' volumes: - user-mysql-data: - reservation-mysql-data: + user-postgres-data: + reservation-postgres-data: flight-postgres-data: - payments-mysql-data: - user-mysql-tmp: - reservation-mysql-tmp: - payments-mysql-tmp: + payments-postgres-data: prometheus_data: grafana-storage: diff --git a/payment-service/build.gradle b/payment-service/build.gradle index 17731c74..2c40dbf2 100644 --- a/payment-service/build.gradle +++ b/payment-service/build.gradle @@ -36,8 +36,10 @@ dependencies { annotationProcessor 'org.projectlombok:lombok' // eureka implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' - // mysql - runtimeOnly 'com.mysql:mysql-connector-j' +// // mysql +// runtimeOnly 'com.mysql:mysql-connector-j' + // postsql + runtimeOnly 'org.postgresql:postgresql' // test testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' diff --git a/payment-service/src/main/resources/application.yml b/payment-service/src/main/resources/application.yml index d5cf3686..67543d79 100644 --- a/payment-service/src/main/resources/application.yml +++ b/payment-service/src/main/resources/application.yml @@ -5,11 +5,18 @@ spring: application: name: payment-service +# datasource: +# url: jdbc:mysql://payments-db:3306/payments_db +# username: ${PAYMENT_DB_USERNAME} +# password: ${PAYMENT_DB_PASSWORD} +# driver-class-name: com.mysql.cj.jdbc.Driver + datasource: - url: jdbc:mysql://payments-db:3306/payments_db + driver-class-name: org.postgresql.Driver + url: jdbc:postgresql://payments-db:5432/payments_db username: ${PAYMENT_DB_USERNAME} password: ${PAYMENT_DB_PASSWORD} - driver-class-name: com.mysql.cj.jdbc.Driver + jpa: hibernate: diff --git a/reservation-service/build.gradle b/reservation-service/build.gradle index adc0e93d..0168f3af 100644 --- a/reservation-service/build.gradle +++ b/reservation-service/build.gradle @@ -38,7 +38,8 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-redis' testImplementation 'org.springframework.kafka:spring-kafka-test' compileOnly 'org.projectlombok:lombok' - runtimeOnly 'com.mysql:mysql-connector-j' + // postsql + runtimeOnly 'org.postgresql:postgresql' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' runtimeOnly 'io.micrometer:micrometer-registry-prometheus' diff --git a/reservation-service/src/main/resources/application.yml b/reservation-service/src/main/resources/application.yml index 6aacc188..c135f42c 100644 --- a/reservation-service/src/main/resources/application.yml +++ b/reservation-service/src/main/resources/application.yml @@ -2,11 +2,17 @@ spring: application: name: reservation-service +# datasource: +# url: jdbc:mysql://reservation-db:3306/reservation_db +# username: ${RESERVATION_DB_ID} +# password: ${RESERVATION_DB_PASSWORD} +# driver-class-name: com.mysql.cj.jdbc.Driver + datasource: - url: jdbc:mysql://reservation-db:3306/reservation_db + driver-class-name: org.postgresql.Driver + url: jdbc:postgresql://reservation-db:5432/reservation_db username: ${RESERVATION_DB_ID} password: ${RESERVATION_DB_PASSWORD} - driver-class-name: com.mysql.cj.jdbc.Driver jpa: database: mysql diff --git a/user-service/build.gradle b/user-service/build.gradle index ad66bb98..10974750 100644 --- a/user-service/build.gradle +++ b/user-service/build.gradle @@ -33,7 +33,9 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' compileOnly 'org.projectlombok:lombok' - runtimeOnly 'com.mysql:mysql-connector-j' +// runtimeOnly 'com.mysql:mysql-connector-j' + // postsql + runtimeOnly 'org.postgresql:postgresql' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' diff --git a/user-service/src/main/resources/application.yml b/user-service/src/main/resources/application.yml index ec680096..08e1d9d5 100644 --- a/user-service/src/main/resources/application.yml +++ b/user-service/src/main/resources/application.yml @@ -2,11 +2,17 @@ spring: application: name: user-service +# datasource: +# url: jdbc:mysql://oneultanda-user-db:3306/user_db +# username: ${USER_DB_ID} +# password: ${USER_DB_PASSWORD} +# driver-class-name: com.mysql.cj.jdbc.Driver + datasource: - url: jdbc:mysql://oneultanda-user-db:3306/user_db + driver-class-name: org.postgresql.Driver + url: jdbc:postgresql://user-db:5432/user_db username: ${USER_DB_ID} password: ${USER_DB_PASSWORD} - driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: From d4d7f38cb3e0217260e9683f73ea6e9629edd5a0 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 17:27:33 +0900 Subject: [PATCH 47/59] fix: binary -> uuid MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit postgresql에는 binary가 없음 -> uuid로 변경 --- .../userservice/infrastructure/entity/UserJpaEntity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user-service/src/main/java/com/oneultanda/userservice/infrastructure/entity/UserJpaEntity.java b/user-service/src/main/java/com/oneultanda/userservice/infrastructure/entity/UserJpaEntity.java index 29019b55..d9982e0d 100644 --- a/user-service/src/main/java/com/oneultanda/userservice/infrastructure/entity/UserJpaEntity.java +++ b/user-service/src/main/java/com/oneultanda/userservice/infrastructure/entity/UserJpaEntity.java @@ -20,7 +20,7 @@ public class UserJpaEntity extends BaseTimeEntity { @Id @GeneratedValue @UuidGenerator - @Column(columnDefinition = "BINARY(16)") + @Column(columnDefinition = "uuid") private UUID id; @Column(nullable = false, unique = true) From 0af1d440ac28594b487e1ed8dd1ff5c881b012a8 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 17:32:05 +0900 Subject: [PATCH 48/59] fix: env name error PAYMENTS_DB_USERNAME -> PAYMENT_DB_USERNAME --- docker-compose-server.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index 0504a470..af6530df 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -140,9 +140,9 @@ services: image: postgres:16.3 container_name: oneultanda-payments-db environment: - - POSTGRES_USER=${PAYMENTS_DB_USERNAME} + - POSTGRES_USER=${PAYMENT_DB_USERNAME} - POSTGRES_DB=payments_db - - POSTGRES_PASSWORD=${PAYMENTS_DB_PASSWORD} + - POSTGRES_PASSWORD=${PAYMENT_DB_PASSWORD} ports: - "5435:5432" volumes: From 786031c1585c3463647011151cf7faa3c7ae9fce Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 18:19:17 +0900 Subject: [PATCH 49/59] fix: add init-scrips MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cd 과정에서 init-scrips 추가 --- .github/workflows/docker-ci-cd.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker-ci-cd.yml b/.github/workflows/docker-ci-cd.yml index ba1b9e43..6f645dbc 100644 --- a/.github/workflows/docker-ci-cd.yml +++ b/.github/workflows/docker-ci-cd.yml @@ -85,11 +85,12 @@ jobs: run: | ssh ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }} "mkdir -p /home/${{ secrets.SSH_USER }}/app" - - name: Send docker-compose files and .env + - name: Send docker-compose files and .env and init-scripts run: | scp ./docker-compose-server.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/docker-compose.yml scp ./.env ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ scp ./prometheus.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ + scp -r ./init-scripts ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ - name: Run docker compose on server run: | From 8d9582dae946b8844e1002b70eb314a3ec1b7fe1 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 19:06:18 +0900 Subject: [PATCH 50/59] fix: del mysql setting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mysql jpa 관련 파일 삭제 수정 --- .../src/main/resources/application.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/reservation-service/src/main/resources/application.yml b/reservation-service/src/main/resources/application.yml index c135f42c..aa606d0f 100644 --- a/reservation-service/src/main/resources/application.yml +++ b/reservation-service/src/main/resources/application.yml @@ -15,17 +15,14 @@ spring: password: ${RESERVATION_DB_PASSWORD} jpa: - database: mysql hibernate: - ddl-auto: create + ddl-auto: update properties: + jdbc: + time_zone: UTC hibernate: format_sql: true - use_sql_comments: true - spring.jpa.open-in-view: false - default_batch_fetch_size: 10 - default_schema: reservation_db - dialect: org.hibernate.dialect.MySQL8Dialect + show_sql: true data: redis: From d1da8229133d2663eb0628f4ed837fb80e7cbbb1 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 19:28:05 +0900 Subject: [PATCH 51/59] fix: reservationId null error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit db내에서 생성시점 전이라 id가 없는 문제 발생 --- .../application/service/ReservationServiceImpl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/reservation-service/src/main/java/com/oneul_tanda/reservation_service/reservation/application/service/ReservationServiceImpl.java b/reservation-service/src/main/java/com/oneul_tanda/reservation_service/reservation/application/service/ReservationServiceImpl.java index e61ad4db..5aa7bf1f 100644 --- a/reservation-service/src/main/java/com/oneul_tanda/reservation_service/reservation/application/service/ReservationServiceImpl.java +++ b/reservation-service/src/main/java/com/oneul_tanda/reservation_service/reservation/application/service/ReservationServiceImpl.java @@ -243,7 +243,7 @@ public ConfirmReservationResponseDto confirmReservationV2(ConfirmReservationComm GetFlightInfo flightInfo = flightClient.getFlight(flightId); List ticketList = createTicketsFromHoldData(userId, flightInfo, passengers); Reservation reservation = Reservation.createReservation(userId, ticketList); - + reservationRepository.save(reservation); // 4. 결제 요청 @@ -253,7 +253,6 @@ public ConfirmReservationResponseDto confirmReservationV2(ConfirmReservationComm } - // 5. 결제 성공 -> 예약 확정 reservation.confirmReservation(); reservationRepository.save(reservation); From a32697c16c193042308d5cb8c62ca5837c9f0e29 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 20:00:15 +0900 Subject: [PATCH 52/59] fix: grafana, prometheus permit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 권한 문제 발생 --- docker-compose-server.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index af6530df..a6470aab 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -198,6 +198,7 @@ services: environment: - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD} + user: "472" depends_on: - prometheus @@ -211,6 +212,7 @@ services: - prometheus_data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' + - '--query.log-file=""' volumes: user-postgres-data: From 2706fe1775761b6314ebd8f6f029266257295297 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 20:11:59 +0900 Subject: [PATCH 53/59] fix: grafana, prometheus permit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 권한 문제 발생 --- docker-compose-server.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index a6470aab..f02242b3 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -193,7 +193,7 @@ services: ports: - "3000:3000" volumes: - - grafana-storage:/var/lib/grafana + - ./grafana/data:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning environment: - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} @@ -209,15 +209,14 @@ services: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - - prometheus_data:/prometheus + - ./prometheus/data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - - '--query.log-file=""' volumes: user-postgres-data: reservation-postgres-data: flight-postgres-data: payments-postgres-data: - prometheus_data: - grafana-storage: +# prometheus_data: +# grafana-storage: From 42e58616cf8f8831ed3a38ff6b7f4ffa7edb86ca Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 20:31:11 +0900 Subject: [PATCH 54/59] fix: grafana, prometheus permit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit init을 통해 directory 생성 및 권한 부여 --- docker-compose-server.yml | 75 +++++++++++++++++++++++++++++++-------- 1 file changed, 60 insertions(+), 15 deletions(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index f02242b3..56de0cbc 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -187,36 +187,81 @@ services: depends_on: - kafka +# grafana: +# image: grafana/grafana:latest +# container_name: grafana +# ports: +# - "3000:3000" +# volumes: +# - ./grafana/data:/var/lib/grafana +# - ./grafana/provisioning:/etc/grafana/provisioning +# environment: +# - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} +# - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD} +# user: "472" +# depends_on: +# - prometheus +# +# prometheus: +# image: prom/prometheus:latest +# container_name: prometheus +# ports: +# - "9090:9090" +# volumes: +# - ./prometheus.yml:/etc/prometheus/prometheus.yml +# - ./prometheus/data:/prometheus +# user: "472" +# command: +# - '--config.file=/etc/prometheus/prometheus.yml' + + prometheus-init: + image: alpine + container_name: prometheus-init + command: ["sh", "-c", "mkdir -p /prometheus/data && chown -R 65534:65534 /prometheus"] + volumes: + - prometheus_data:/prometheus + restart: "no" + + prometheus: + image: prom/prometheus:latest + container_name: prometheus + ports: + - "9090:9090" + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml + - prometheus_data:/prometheus + command: + - '--config.file=/etc/prometheus/prometheus.yml' + depends_on: + - prometheus-init + + grafana-init: + image: alpine + container_name: grafana-init + command: ["sh", "-c", "chown -R 472:472 /var/lib/grafana"] + volumes: + - grafana-storage:/var/lib/grafana + restart: "no" + grafana: image: grafana/grafana:latest container_name: grafana ports: - "3000:3000" volumes: - - ./grafana/data:/var/lib/grafana + - grafana-storage:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning environment: - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD} - user: "472" depends_on: + - grafana-init - prometheus - prometheus: - image: prom/prometheus:latest - container_name: prometheus - ports: - - "9090:9090" - volumes: - - ./prometheus.yml:/etc/prometheus/prometheus.yml - - ./prometheus/data:/prometheus - command: - - '--config.file=/etc/prometheus/prometheus.yml' - volumes: user-postgres-data: reservation-postgres-data: flight-postgres-data: payments-postgres-data: -# prometheus_data: -# grafana-storage: + prometheus_data: + grafana-storage: From 0a90f86f2525df2358bcc1adc0b0e42f8a72300f Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 20:50:17 +0900 Subject: [PATCH 55/59] fix: grafana, prometheus volume fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit volume 경로 수정 --- docker-compose-server.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose-server.yml b/docker-compose-server.yml index 56de0cbc..f445bab5 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -228,7 +228,7 @@ services: ports: - "9090:9090" volumes: - - ./prometheus.yml:/etc/prometheus/prometheus.yml + - ./app/prometheus.yml:/etc/prometheus/prometheus.yml - prometheus_data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' @@ -250,7 +250,7 @@ services: - "3000:3000" volumes: - grafana-storage:/var/lib/grafana - - ./grafana/provisioning:/etc/grafana/provisioning + - ./app/grafana/provisioning:/etc/grafana/provisioning environment: - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD} From 69968f8a5b868067e92ad25d316b08747001114a Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 21:01:36 +0900 Subject: [PATCH 56/59] fix: grafana provisioning provisioning directory push --- .github/workflows/docker-ci-cd.yml | 1 + docker-compose-server.yml | 31 ++---------------------------- 2 files changed, 3 insertions(+), 29 deletions(-) diff --git a/.github/workflows/docker-ci-cd.yml b/.github/workflows/docker-ci-cd.yml index 6f645dbc..0fbb5d0d 100644 --- a/.github/workflows/docker-ci-cd.yml +++ b/.github/workflows/docker-ci-cd.yml @@ -91,6 +91,7 @@ jobs: scp ./.env ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ scp ./prometheus.yml ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ scp -r ./init-scripts ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ + scp -r ./grafana ${{ secrets.SSH_USER }}@${{ secrets.INSTANCE_IP }}:/home/ubuntu/app/ - name: Run docker compose on server run: | diff --git a/docker-compose-server.yml b/docker-compose-server.yml index f445bab5..52e102fd 100644 --- a/docker-compose-server.yml +++ b/docker-compose-server.yml @@ -187,33 +187,6 @@ services: depends_on: - kafka -# grafana: -# image: grafana/grafana:latest -# container_name: grafana -# ports: -# - "3000:3000" -# volumes: -# - ./grafana/data:/var/lib/grafana -# - ./grafana/provisioning:/etc/grafana/provisioning -# environment: -# - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} -# - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD} -# user: "472" -# depends_on: -# - prometheus -# -# prometheus: -# image: prom/prometheus:latest -# container_name: prometheus -# ports: -# - "9090:9090" -# volumes: -# - ./prometheus.yml:/etc/prometheus/prometheus.yml -# - ./prometheus/data:/prometheus -# user: "472" -# command: -# - '--config.file=/etc/prometheus/prometheus.yml' - prometheus-init: image: alpine container_name: prometheus-init @@ -228,7 +201,7 @@ services: ports: - "9090:9090" volumes: - - ./app/prometheus.yml:/etc/prometheus/prometheus.yml + - ./prometheus.yml:/etc/prometheus/prometheus.yml - prometheus_data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' @@ -250,7 +223,7 @@ services: - "3000:3000" volumes: - grafana-storage:/var/lib/grafana - - ./app/grafana/provisioning:/etc/grafana/provisioning + - ./grafana/provisioning:/etc/grafana/provisioning environment: - GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER} - GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD} From d5c2cba0ff664d9f160f402bdcdf71e8edcab60a Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 21:21:15 +0900 Subject: [PATCH 57/59] fix: prometheus.yml target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit prometheus.yml target 수정 --- prometheus.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prometheus.yml b/prometheus.yml index 157e2dbc..71219ce0 100644 --- a/prometheus.yml +++ b/prometheus.yml @@ -5,4 +5,4 @@ scrape_configs: - job_name: 'spring-boot' metrics_path: '/actuator/prometheus' static_configs: - - targets: ['host.docker.internal:19095', 'host.docker.internal:19096'] + - targets: ['flight-service:19094', 'reservation-service:19095', 'queue-service:19096'] From 232acdbfd895971f34303150ea1ab6e2c43adf06 Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 21:48:28 +0900 Subject: [PATCH 58/59] fix: flight service cache fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cache 직렬화 관련 수정 --- .../flight_service/infrastructure/config/CacheConfig.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/flight-service/src/main/java/com/oneul_tanda/flight_service/infrastructure/config/CacheConfig.java b/flight-service/src/main/java/com/oneul_tanda/flight_service/infrastructure/config/CacheConfig.java index 5f3353bf..bf3817d3 100644 --- a/flight-service/src/main/java/com/oneul_tanda/flight_service/infrastructure/config/CacheConfig.java +++ b/flight-service/src/main/java/com/oneul_tanda/flight_service/infrastructure/config/CacheConfig.java @@ -4,6 +4,7 @@ import com.oneul_tanda.flight_service.presentation.dtos.airline.AirlineResponse; import com.oneul_tanda.flight_service.presentation.dtos.airport.AirportResponse; import com.oneul_tanda.flight_service.presentation.dtos.flight.FlightDetailResponse; +import com.oneul_tanda.flight_service.presentation.dtos.flight.FlightResponse; import java.time.Duration; import java.util.HashMap; import java.util.Map; @@ -36,6 +37,8 @@ RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory, ObjectM objectMapper, AirlineResponse.class); Jackson2JsonRedisSerializer flightSerializer = new Jackson2JsonRedisSerializer<>( objectMapper, FlightDetailResponse.class); + Jackson2JsonRedisSerializer flightOfferSerializer = new Jackson2JsonRedisSerializer<>( + objectMapper, FlightResponse.class); // 기본 캐시 설정 RedisCacheConfiguration baseConfig = RedisCacheConfiguration.defaultCacheConfig() @@ -62,7 +65,7 @@ RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory, ObjectM // flightOffers 캐시 설정 (1분 TTL) RedisCacheConfiguration flightOffersConfig = RedisCacheConfiguration.defaultCacheConfig() - .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(flightSerializer)) + .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(flightOfferSerializer)) .disableCachingNullValues() .entryTtl(Duration.ofMinutes(1)); @@ -90,4 +93,4 @@ public RedisTemplate redisTemplate( return template; } -} +} \ No newline at end of file From 5b027178ef59a31a7ee907d2cb313874514c74dd Mon Sep 17 00:00:00 2001 From: kss Date: Thu, 1 May 2025 22:23:08 +0900 Subject: [PATCH 59/59] feat: http client for server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ec2 서버 http 테스트, CacheConfig 직렬화 수정 --- api-http-test/integration-server.http | 100 ++++++++++++++++++ .../infrastructure/config/CacheConfig.java | 7 +- 2 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 api-http-test/integration-server.http diff --git a/api-http-test/integration-server.http b/api-http-test/integration-server.http new file mode 100644 index 00000000..79fd012b --- /dev/null +++ b/api-http-test/integration-server.http @@ -0,0 +1,100 @@ +# 전체 시나리오 +# 회원가입 → 로그인 → 특가 항공권 예매 요청 → 예약 대기열 서비스: 좌석 선점 처리 → 예약 대기열 서비스: 좌석 선점 성공 → +# 예약 대기열 서비스 Kafka prodcuer: 예약 선점 성공 이벤트 발행 → 예약 서비스 Kafka Consumer: 예약 임시 생성 → +# 예약 서비스: 예약 확정 (탑승객 정보 입력 + 결제 처리) + + +### 유저 생성 - internal +POST http://43.203.66.111:19091/api/v1/users/signup +Content-Type: application/json + +{ + "username": "tester", + "password": "12345678a*", + "nickname": "테스터", + "email": "test@test.com", + "contact": "010-1111-2222" +} + + +### 로그인 +POST http://43.203.66.111:19091/api/v1/users/login +Content-Type: application/json + +{ + "username": "tester", + "password": "12345678a*" +} +> {% + client.global.set("access_token", response.headers.valueOf("Authorization")) +%} + +### 항공편 조회 및 저장 +POST http://43.203.66.111:19091/api/v1/amadeus/flights/fetch-and-save?departureAirportCode=LGW&arrivalAirportCode=KWE&departureDate=2025-05-03T19:45:25&requiredSeats=2 +Authorization: Bearer {{access_token}} + + +### 특가 항공권 예매 요청 +POST http://43.203.66.111:19091/api/v1/queue +Content-Type: application/json +Authorization: Bearer {{access_token}} + +{ + "flightId" : "f83230fd-366c-4d32-875a-3f444b6c00fa", + "seatCount" : 2 +} + + +### 예약 대기열 서비스 Kafka prodcuer: 예약 선점 성공 이벤트 발행 + +### 예약 서비스 Kafka Consumer: 예약 임시 생성 + + + +### 예약 확정 V2 +PUT http://43.203.66.111:19091/api/v1/reservations/confirm +Content-Type: application/json +Authorization: Bearer {{access_token}} + +{ + "flightId": "f83230fd-366c-4d32-875a-3f444b6c00fa", + "passengers": [ + { + "name": "홍길동1", + "birth": "1990-01-01", + "gender": "MALE", + "passportNumber": "P12345678" + }, + { + "name": "홍길동", + "birth": "1995-06-10", + "gender": "FEMALE", + "passportNumber": "P87654321" + } + ] +} + + +### 예약 확정 V2, 결제 재시도 +PUT http://43.203.66.111:19091/api/v1/reservations/confirm +Content-Type: application/json +Authorization: Bearer {{access_token}} + +{ + "flightId": "57944490-33fb-4bb1-9254-1eae30a1a25c" +} + + + + +### 예약 단일 조회 +GET http://43.203.66.111:19091/api/v1/reservations/4dbd8623-d076-4132-ae1b-c795da8972f1 +Content-Type: application/json +Authorization: Bearer {{access_token}} + + +## 예약 목록 조회 +### 예약 목록 조회 - Default +GET http://43.203.66.111:19091/api/v1/reservations +Content-Type: application/json +Authorization: Bearer {{access_token}} diff --git a/flight-service/src/main/java/com/oneul_tanda/flight_service/infrastructure/config/CacheConfig.java b/flight-service/src/main/java/com/oneul_tanda/flight_service/infrastructure/config/CacheConfig.java index bf3817d3..75702fc9 100644 --- a/flight-service/src/main/java/com/oneul_tanda/flight_service/infrastructure/config/CacheConfig.java +++ b/flight-service/src/main/java/com/oneul_tanda/flight_service/infrastructure/config/CacheConfig.java @@ -4,7 +4,6 @@ import com.oneul_tanda.flight_service.presentation.dtos.airline.AirlineResponse; import com.oneul_tanda.flight_service.presentation.dtos.airport.AirportResponse; import com.oneul_tanda.flight_service.presentation.dtos.flight.FlightDetailResponse; -import com.oneul_tanda.flight_service.presentation.dtos.flight.FlightResponse; import java.time.Duration; import java.util.HashMap; import java.util.Map; @@ -26,7 +25,7 @@ public class CacheConfig { @Bean RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory, ObjectMapper objectMapper) { - // 기본 직렬화기 (다른 캐시용) + // 기본 직렬화기 GenericJackson2JsonRedisSerializer genericSerializer = new GenericJackson2JsonRedisSerializer( objectMapper); @@ -37,8 +36,6 @@ RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory, ObjectM objectMapper, AirlineResponse.class); Jackson2JsonRedisSerializer flightSerializer = new Jackson2JsonRedisSerializer<>( objectMapper, FlightDetailResponse.class); - Jackson2JsonRedisSerializer flightOfferSerializer = new Jackson2JsonRedisSerializer<>( - objectMapper, FlightResponse.class); // 기본 캐시 설정 RedisCacheConfiguration baseConfig = RedisCacheConfiguration.defaultCacheConfig() @@ -65,7 +62,7 @@ RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory, ObjectM // flightOffers 캐시 설정 (1분 TTL) RedisCacheConfiguration flightOffersConfig = RedisCacheConfiguration.defaultCacheConfig() - .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(flightOfferSerializer)) + .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(genericSerializer)) .disableCachingNullValues() .entryTtl(Duration.ofMinutes(1));