diff --git a/.github/workflows/dev-cd.yml b/.github/workflows/dev-cd.yml index c1c7f42d..9f5f3335 100644 --- a/.github/workflows/dev-cd.yml +++ b/.github/workflows/dev-cd.yml @@ -108,14 +108,11 @@ jobs: scp -i deploy_key.pem \ -o StrictHostKeyChecking=no \ ./docker-compose.dev.yml \ - ./docs/infra-config/config.alloy \ - ./docs/infra-config/nginx.dev.conf \ ${{ secrets.DEV_USERNAME }}@${{ secrets.DEV_HOST }}:/home/${{ secrets.DEV_USERNAME }}/solid-connection-dev/ # --- 서버에서 Docker Pull 및 재시작 --- - - name: Run docker compose and apply nginx config + - name: Run deployment on server run: | - # GITHUB_TOKEN을 이용해 서버에서 로그인 (App Token 불필요) ssh -i deploy_key.pem \ -o StrictHostKeyChecking=no \ ${{ secrets.DEV_USERNAME }}@${{ secrets.DEV_HOST }} \ @@ -127,38 +124,18 @@ jobs: export IMAGE_TAG_ONLY="${{ needs.build-and-push.outputs.image_tag }}" export FULL_IMAGE_NAME="ghcr.io/${OWNER_LOWERCASE}/solid-connection-dev:${IMAGE_TAG_ONLY}" - # 2. 서버가 GHCR에 로그인 (GITHUB_TOKEN 사용) - # App Token 대신 현재 워크플로우의 임시 토큰을 넘겨줍니다. + # 2. GHCR 로그인 & Pull echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin - - # 3. Docker Pull echo "Pulling new image: $FULL_IMAGE_NAME" docker pull $FULL_IMAGE_NAME - # 4. alloy 설정 및 Nginx 설정 적용 - cd /home/${{ secrets.DEV_USERNAME }}/solid-connection-dev - - mkdir -p ./docs/infra-config - - if [ -d "./docs/infra-config/config.alloy" ]; then - echo "Removing directory created by Docker..." - rm -rf ./docs/infra-config/config.alloy - fi - - mv -f ./config.alloy ./docs/infra-config/config.alloy - - mkdir -p ./nginx - mv ./nginx.dev.conf ./nginx/default.conf - sudo cp ./nginx/default.conf /etc/nginx/conf.d/default.conf - sudo nginx -t - sudo nginx -s reload - - # 5. Docker Compose 재시작 + # 3. Spring Boot 앱 재시작 echo "Restarting Docker Compose with tag: $IMAGE_TAG_ONLY" - docker compose -f docker-compose.dev.yml down - IMAGE_TAG=$IMAGE_TAG_ONLY docker compose -f docker-compose.dev.yml up -d + cd /home/${{ secrets.DEV_USERNAME }}/solid-connection-dev + docker compose -f docker-compose.dev.yml down || true + OWNER_LOWERCASE=$OWNER_LOWERCASE IMAGE_TAG=$IMAGE_TAG_ONLY docker compose -f docker-compose.dev.yml up -d - # 6. 정리 작업 + # 4. 정리 작업 echo "Pruning dangling images..." docker image prune -f diff --git a/.github/workflows/prod-cd.yml b/.github/workflows/prod-cd.yml index a7dda5ab..47c4d2ea 100644 --- a/.github/workflows/prod-cd.yml +++ b/.github/workflows/prod-cd.yml @@ -124,8 +124,6 @@ jobs: scp -i deploy_key.pem \ -o StrictHostKeyChecking=no \ ./docker-compose.prod.yml \ - ./docs/infra-config/config.alloy \ - ./docs/infra-config/nginx.prod.conf \ ${{ secrets.USERNAME }}@${{ secrets.HOST }}:/home/${{ secrets.USERNAME }}/solid-connection-prod/ # --- 서버에서 Docker Pull 및 재시작 --- @@ -142,35 +140,16 @@ jobs: export IMAGE_TAG_ONLY="${{ needs.build-and-push.outputs.image_tag }}" export FULL_IMAGE_NAME="ghcr.io/${OWNER_LOWERCASE}/solid-connection-server:${IMAGE_TAG_ONLY}" - # 2. 서버가 GHCR에 로그인 (GITHUB_TOKEN 사용) + # 2. GHCR 로그인 & Pull # App Token 대신 현재 워크플로우의 임시 토큰을 사용합니다. echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin - - # 3. docker pull echo "Pulling new image: $FULL_IMAGE_NAME" docker pull $FULL_IMAGE_NAME - # 4. alloy 설정 및 Nginx 설정 적용 - cd /home/${{ secrets.USERNAME }}/solid-connection-prod - - mkdir -p ./docs/infra-config - - if [ -d "./docs/infra-config/config.alloy" ]; then - echo "Removing directory created by Docker..." - rm -rf ./docs/infra-config/config.alloy - fi - - mv -f ./config.alloy ./docs/infra-config/config.alloy - - mkdir -p ./nginx - mv ./nginx.prod.conf ./nginx/default.conf - sudo cp ./nginx/default.conf /etc/nginx/conf.d/default.conf - sudo nginx -t - sudo nginx -s reload - - # 5. Docker Compose 재시작 + # 3. Spring Boot 앱 재시작 echo "Restarting Docker Compose with tag: $IMAGE_TAG_ONLY" - docker compose -f docker-compose.prod.yml down + cd /home/${{ secrets.USERNAME }}/solid-connection-prod + docker compose -f docker-compose.prod.yml down || true OWNER_LOWERCASE=$OWNER_LOWERCASE IMAGE_TAG=$IMAGE_TAG_ONLY docker compose -f docker-compose.prod.yml up -d # 6. 정리 diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 29aaf5bb..02554521 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,44 +1,14 @@ version: '3.8' services: - redis: - image: redis:latest - container_name: redis - ports: - - "6379:6379" - - redis-exporter: - image: oliver006/redis_exporter - container_name: redis-exporter - ports: - - "9121:9121" - environment: - REDIS_ADDR: "redis:6379" - depends_on: - - redis - solid-connection-dev: image: ghcr.io/${OWNER_LOWERCASE}/solid-connection-dev:${IMAGE_TAG:-latest} container_name: solid-connection-dev - ports: - - "8080:8080" - - "8081:8081" + network_mode: "host" environment: - SPRING_PROFILES_ACTIVE=dev - - SPRING_DATA_REDIS_HOST=redis + - SPRING_DATA_REDIS_HOST=127.0.0.1 - SPRING_DATA_REDIS_PORT=6379 volumes: - ./logs:/var/log/spring - depends_on: - - redis - - alloy: - image: grafana/alloy:latest - container_name: alloy - ports: - - "12345:12345" - volumes: - - ./logs:/var/log/spring - - ./docs/infra-config/config.alloy:/etc/alloy/config.alloy:ro - environment: - - ALLOY_ENV=dev + restart: always diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 5b26eecf..77afba39 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -1,44 +1,14 @@ version: '3.8' services: - redis: - image: redis:latest - container_name: redis - ports: - - "6379:6379" - - redis-exporter: - image: oliver006/redis_exporter - container_name: redis-exporter - ports: - - "9121:9121" - environment: - REDIS_ADDR: "redis:6379" - depends_on: - - redis - solid-connection-server: image: ghcr.io/${OWNER_LOWERCASE}/solid-connection-server:${IMAGE_TAG:-latest} container_name: solid-connection-server - ports: - - "8080:8080" - - "8081:8081" + network_mode: "host" environment: - SPRING_PROFILES_ACTIVE=prod - - SPRING_DATA_REDIS_HOST=redis + - SPRING_DATA_REDIS_HOST=127.0.0.1 - SPRING_DATA_REDIS_PORT=6379 volumes: - ./logs:/var/log/spring - depends_on: - - redis - - alloy: - image: grafana/alloy:latest - container_name: alloy - ports: - - "12345:12345" - volumes: - - ./logs:/var/log/spring - - ./docs/infra-config/config.alloy:/etc/alloy/config.alloy:ro - environment: - - ALLOY_ENV=production + restart: always