diff --git a/.env b/.env new file mode 100644 index 0000000..db4d196 --- /dev/null +++ b/.env @@ -0,0 +1,8 @@ +DB_NAME=${{ secrets.DB_NAME }} +DB_USERNAME=${{ secrets.DB_PASSWORD }} +DB_PASSWORD=${{ secrets.DB_USERNAME }} + + +BUCKET_ACCESSKEY=${{ secrets.BUCKET_ACCESSORY }} +BUCKET_SECRETKEY=${{ secrets.BUCKET_SECRETARY }} +BUCKET_NAME=${{ secrets.BUCKET_NAME }} \ No newline at end of file diff --git a/.github/workflows/gradle-publish.yml b/.github/workflows/gradle-publish.yml index aafd8b3..5d912d2 100644 --- a/.github/workflows/gradle-publish.yml +++ b/.github/workflows/gradle-publish.yml @@ -1,15 +1,9 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. -# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created -# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle +name: docker multi-stage build -name: Gradle Package - -on: [push] +on: [ push ] # 해당 branch에 push 되었을 경우 # https://github.com/marketplace/actions/build-and-push-docker-images + jobs: docker-build-and-push: runs-on: ubuntu-latest @@ -19,12 +13,12 @@ jobs: uses: docker/login-action@v3 with: username: ${{ vars.DOCKERHUB_USERNAME }} - password: ${{ vars.DOCKERHUB_TOKEN }} + password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - - name: Set up Docker Builds + name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and push @@ -42,21 +36,17 @@ jobs: - name: Deploy to EC2 uses: appleboy/ssh-action@v1.2.0 with: - host: ${{ vars.EC2_HOST }} - username: ${{ vars.EC2_USER }} - key: ${{ vars.EC2_KEY }} + host: ${{ secrets.EC2_HOST }} + username: ${{ secrets.EC2_USER }} + key: ${{ secrets.EC2_KEY }} script: | - # 기존 컨테이너 중지 및 제거 - CONTAINER_ID=$(sudo docker ps -q --filter "publish=8080-8080") - if [ ! -z "$CONTAINER_ID" ]; then - sudo docker stop $CONTAINER_ID - sudo docker rm $CONTAINER_ID - fi - - # 새 이미지 Pull 및 실행 - sudo docker pull ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKER_IMAGE_TAG_NAME }}:latest - sudo docker run -d -p 8080:8080 \ - -e DB_USERNAME=${{vars.DB_USERNAME}} \ - -e DB_PASSWORD=${{vars.DB_PASSWORD}} \ - -e DB_URL=${{vars.DB_URL}} \ - ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKER_IMAGE_TAG_NAME }}:latest + CONTAINER_ID=$(sudo docker ps -q --filter "publish=8080-8080") + + if [ ! -z "$CONTAINER_ID" ]; then + sudo docker stop $CONTAINER_ID + sudo docker rm $CONTAINER_ID + fi + + sudo docker pull ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKER_IMAGE_TAG_NAME }}:latest + sudo docker run -d -p 8080:8080 \ + ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKER_IMAGE_TAG_NAME }}:latest diff --git a/Docker-compose.yml b/Docker-compose.yml new file mode 100644 index 0000000..279e68d --- /dev/null +++ b/Docker-compose.yml @@ -0,0 +1,38 @@ +version: '3' +services: + app: + image: trello:latest + build: + context: . + dockerfile: Dockerfile + ports: + - "8080:8080" + environment: + BUCKET_ACCESSKEY: ${BUCKET_ACCESSKEY} + BUCKET_SECRETKEY: ${BUCKET_SECRETKEY} + BUCKET_NAME: ${BUCKET_NAME} + SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/trello?serverTimezone=Asia/Seoul&useSSL=false&allowPublicKeyRetrieval=true + SPRING_DATASOURCE_USERNAME: root + SPRING_DATASOURCE_PASSWORD: 1111 + depends_on: + - db + + db: + image: mysql:8.0 + container_name: my-mysql + environment: + MYSQL_ROOT_PASSWORD: 1111 + MYSQL_DATABASE: trello + MYSQL_USER: demo + MYSQL_PASSWORD: demo + ports: + - "3307:3306" + volumes: + - db_data:/var/lib/mysql + command: + - --character-set-server=utf8mb4 + - --collation-server=utf8mb4_unicode_ci + - --default-authentication-plugin=mysql_native_password + +volumes: + db_data: \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5f24a4c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM eclipse-temurin:17-jdk-alpine + +ARG JAR_FILE=build/libs/*.jar + +COPY ${JAR_FILE} app.jar + +ENTRYPOINT ["java", "-jar", "/app.jar"] + + + + + + + diff --git a/src/test/java/com/example/trello/TrelloApplicationTests.java b/src/test/java/com/example/trello/TrelloApplicationTests.java deleted file mode 100644 index 6281f09..0000000 --- a/src/test/java/com/example/trello/TrelloApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.example.trello; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class TrelloApplicationTests { - - @Test - void contextLoads() { - } - -}