diff --git a/.github/workflows/deploy-admin-docker.yml b/.github/workflows/deploy-admin-docker.yml new file mode 100644 index 00000000..842c2aa3 --- /dev/null +++ b/.github/workflows/deploy-admin-docker.yml @@ -0,0 +1,95 @@ +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.DEVSERVER_CICD_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.DEVSERVER_CICD_SECRET_KEY }} + AWS_REGION: ap-northeast-2 + with: + host: ${{ secrets.EC2_HOST }} + 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 + 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"]