From 28cc199429f5ec5174ed79128520cc6338d33157 Mon Sep 17 00:00:00 2001 From: Jihun Kim Date: Tue, 8 Jul 2025 19:25:40 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EB=8F=84=EC=BB=A4=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-admin-docker.yml | 97 +++++++++++++++++++++++ .github/workflows/deploy-admin.yml | 2 +- docker-compose.yml | 49 ++++++++++++ nowait-app-admin-api/Dockerfile | 8 ++ nowait-app-user-api/Dockerfile | 8 ++ nowait-common/Dockerfile | 6 ++ 6 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/deploy-admin-docker.yml create mode 100644 docker-compose.yml create mode 100644 nowait-app-admin-api/Dockerfile create mode 100644 nowait-app-user-api/Dockerfile create mode 100644 nowait-common/Dockerfile diff --git a/.github/workflows/deploy-admin-docker.yml b/.github/workflows/deploy-admin-docker.yml new file mode 100644 index 00000000..b53517cb --- /dev/null +++ b/.github/workflows/deploy-admin-docker.yml @@ -0,0 +1,97 @@ +name: Dev Admin CI/CD With Docker + +on: + push: + branches: + - develop + paths: + - 'nowait-app-admin-api/**' + - 'nowait-common/**' + - 'nowait-domain/domain-core-rdb/**' + - 'nowait-domain/domain-admin-rdb/**' + - 'nowait-infra/**' + - 'build.gradle' + - 'settings.gradle' + - 'gradle/**' + +env: + DOCKERHUB_REPO: jihuneddie/nowait_dev + DIVISION: admin + IMAGE_TAG: ${{ env.DIVISION }}-${{ github.sha }} + EC2_DEPLOY_PATH: /home/ubuntu/spring-github-action-admin-docker + + +jobs: + build-with-gradle: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'zulu' + + - name: Make gradlew executable + run: chmod +x ./gradlew + + - name: Set YML + run: | + mkdir -p nowait-app-admin-api/src/main/resources + echo "${{ secrets.APPLICATION_DEV_ADMIN_YML }}" \ + | base64 --decode \ + > nowait-app-admin-api/src/main/resources/application-admin.yml + find nowait-app-admin-api/src + + - name: Build Admin JAR + run: ./gradlew clean :nowait-app-admin-api:bootJar -x test + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }} + + + - name: Build and Push Docker Image + run: | + docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/admin/nowait-app-admin-api ./nowait-app-admin-api + docker push ${{ secrets.DOCKERHUB_USERNAME }}/admin/nowait-app-admin-api + + + deploy: + name: Deploy to EC2 + runs-on: ubuntu-latest + needs: build-with-gradle + + steps: + - uses: actions/checkout@v4 + - name: Copy Docker Compose File + uses: appleboy/scp-action@v0.1.7 + with: + host: ${{ secrets.EC2_HOST }} + username: ubuntu + key: ${{ secrets.EC2_KEY }} + source: "docker-compose.yml" + target: ${{ env.EC2_DEPLOY_PATH }} + + - name: Deploy to EC2 + uses: appleboy/ssh-action@v1.0.3 + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: ap-northeast-2 + DOCKER_HUB_NAMESPACE: ${{ secrets.DOCKER_HUB_NAMESPACE }} + with: + host: ${{ secrets.EC2_HOST }} + username: ubuntu + key: ${{ secrets.EC2_KEY }} + port: 22 + envs: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, DOCKER_HUB_NAMESPACE + script: | + cd ${{ env.EC2_DEPLOY_PATH }} + sudo docker-compose pull nowait-app-admin-api + sudo docker-compose up -d nowait-app-admin-api + diff --git a/.github/workflows/deploy-admin.yml b/.github/workflows/deploy-admin.yml index 5c9889c2..5481860f 100644 --- a/.github/workflows/deploy-admin.yml +++ b/.github/workflows/deploy-admin.yml @@ -18,7 +18,7 @@ env: PROJECT_NAME: NoWait DIVISION: admin AWS_REGION: ap-northeast-2 - AWS_S3_BUCKET: nowait-deploy-github-actions + AWS_S3_BUCKET: nowait-deploy-github- actions AWS_CODE_DEPLOY_APPLICATION: nowaiting AWS_CODE_DEPLOY_GROUP: nowaiting-deploy-dev-admin diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..853ac661 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,49 @@ +name: nowait_dev + +services: + mysql: + image: mysql:8.0 + container_name: mysql_nowait_container + environment: + MYSQL_ROOT_PASSWORD: gtable1118! + MYSQL_DATABASE: gtable_dev + MYSQL_USER: developer + MYSQL_PASSWORD: gtable1118! + ports: + - "3306:3306" + volumes: + - mysql_data:/var/lib/mysql + + nowait-app-admin-api: +# build: +# context: nowait-app-admin-api +# dockerfile: Dockerfile + image: jihuneddie/admin/nowait-app-admin-api:latest + container_name: + nowait-app-admin-api + ports: + - "8085:8086" + depends_on: + - mysql + volumes: + - ./nowait-app-admin-api:/app + restart: + always + + nowait-app-user-api: + build: + context: nowait-app-user-api + dockerfile: Dockerfile + container_name: + nowait-app-user-api + ports: + - "8081:8081" + depends_on: + - mysql + volumes: + - ./nowait-app-user-api:/app + restart: + always + +volumes: + mysql_data: diff --git a/nowait-app-admin-api/Dockerfile b/nowait-app-admin-api/Dockerfile new file mode 100644 index 00000000..fd4cd318 --- /dev/null +++ b/nowait-app-admin-api/Dockerfile @@ -0,0 +1,8 @@ +FROM openjdk:17 +ARG JAR_FILE=./build/libs/*.jar +COPY ${JAR_FILE} nowait-app-admin-api.jar + +ARG PROFILE=admin +ENV PROFILE=${PROFILE} + +CMD ["java", "-jar", "nowait-app-admin-api.jar", "--spring.profiles.active=${PROFILE}", "-Djava.security.egd=file:/dev/./urandom", "-Duser.timezone=Asia/Seoul"] diff --git a/nowait-app-user-api/Dockerfile b/nowait-app-user-api/Dockerfile new file mode 100644 index 00000000..32684f04 --- /dev/null +++ b/nowait-app-user-api/Dockerfile @@ -0,0 +1,8 @@ +FROM openjdk:17 +ARG JAR_FILE=./build/libs/*.jar +COPY ${JAR_FILE} nowait-app-user-api.jar + +ARG PROFILE=user +ENV PROFILE=${PROFILE} + +CMD ["java", "-jar", "nowait-app-user-api.jar", "--spring.profiles.active=${PROFILE}", "-Djava.security.egd=file:/dev/./urandom", "-Duser.timezone=Asia/Seoul"] diff --git a/nowait-common/Dockerfile b/nowait-common/Dockerfile new file mode 100644 index 00000000..9c4d8549 --- /dev/null +++ b/nowait-common/Dockerfile @@ -0,0 +1,6 @@ +FROM openjdk:17 + +WORKDIR /app +COPY build/libs/*.jar nowait-common.jar + +CMD ["java", "-jar", "nowait-common.jar"] From 2b1241e5a90c2882902146e4be82ec6f67ec9e2c Mon Sep 17 00:00:00 2001 From: Jihun Kim Date: Tue, 8 Jul 2025 19:44:33 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=EB=B0=B0=ED=8F=AC=20=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=A6=BD=ED=8A=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy-admin-docker.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy-admin-docker.yml b/.github/workflows/deploy-admin-docker.yml index b53517cb..842c2aa3 100644 --- a/.github/workflows/deploy-admin-docker.yml +++ b/.github/workflows/deploy-admin-docker.yml @@ -80,16 +80,14 @@ jobs: - name: Deploy to EC2 uses: appleboy/ssh-action@v1.0.3 env: - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_ACCESS_KEY_ID: ${{ secrets.DEVSERVER_CICD_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.DEVSERVER_CICD_SECRET_KEY }} AWS_REGION: ap-northeast-2 - DOCKER_HUB_NAMESPACE: ${{ secrets.DOCKER_HUB_NAMESPACE }} with: host: ${{ secrets.EC2_HOST }} - username: ubuntu - key: ${{ secrets.EC2_KEY }} - port: 22 - envs: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, DOCKER_HUB_NAMESPACE + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_SSH_KEY }} + envs: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION script: | cd ${{ env.EC2_DEPLOY_PATH }} sudo docker-compose pull nowait-app-admin-api