diff --git a/.github/workflows/Depoly_CD.yml b/.github/workflows/Depoly_CD.yml new file mode 100644 index 0000000..4af56bb --- /dev/null +++ b/.github/workflows/Depoly_CD.yml @@ -0,0 +1,66 @@ +name: 배포(BE) + +on: + push: + branches: + - main + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + - name: 코드 체크아웃 + uses: actions/checkout@v3 + + - name: JDK 설정 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + + - name: Gradle 권한 설정 + run: chmod +x ./gradlew + + - name: 빌드 + run: ./gradlew build + + - name: Docker Hub 로그인 + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + + - name: Docker 이미지 빌드 및 푸시 + uses: docker/build-push-action@v4 + with: + context: . + push: true + tags: ${{ secrets.DOCKER_USERNAME }}/perfume-pedia:latest + + - name: docker-compose.yml 전송 + uses: appleboy/scp-action@master + with: + host: ${{ secrets.SSH_HOST }} + username: ${{ secrets.SSH_USERNAME }} + password: ${{ secrets.SSH_PASSWORD }} + port: ${{ secrets.SSH_PORT }} + source: "docker-compose.yml" + target: "/home/argo/Perfume-project/Docker" + + - name: 서버 배포 + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.SSH_HOST }} + port: ${{ secrets.SSH_PORT }} + username: ${{ secrets.SSH_USERNAME }} + password: ${{ secrets.SSH_PASSWORD }} + script: | + cd /home/argo/Perfume-project/Docker + echo "DB_USERNAME=${{ secrets.DB_USERNAME }}" > .env + echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> .env + echo "DB_ROOT_PASSWORD=${{ secrets.DB_ROOT_PASSWORD }}" >> .env + echo "DOCKER_USERNAME=${{ secrets.DOCKER_USERNAME }}" >> .env + docker-compose down + docker-compose pull + docker-compose up -d \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..68d9c64 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM openjdk:17-jdk-slim + +WORKDIR /app + +COPY build/libs/*.jar app.jar + +EXPOSE 8080 + +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..974d28c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,32 @@ +version: '3.8' + +services: + app: + image: ${DOCKER_USERNAME}/perfume-pedia:latest + container_name: perfume-pedia + ports: + - "8080:8080" + environment: + - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/perfumePedia?serverTimezone=UTC&characterEncoding=UTF-8 + - SPRING_DATASOURCE_USERNAME=${DB_USERNAME} + - SPRING_DATASOURCE_PASSWORD=${DB_PASSWORD} + volumes: + - /home/argo/Perfume-project/Docker:/app/data + depends_on: + - db + + db: + image: mysql:8.0 + container_name: mysql + ports: + - "3306:3306" + environment: + - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} + - MYSQL_DATABASE=perfumePedia + - MYSQL_USER=${DB_USERNAME} + - MYSQL_PASSWORD=${DB_PASSWORD} + volumes: + - mysql_data:/var/lib/mysql + +volumes: + mysql_data: \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ef1a275..0bd052a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -2,10 +2,10 @@ spring: application: name: perfumepedia-backend datasource: -# url: jdbc:mysql://localhost:3306/perfumePedia?serverTimezone=UTC&characterEncoding=UTF-8 - url: jdbc:mysql://localhost:3306/PerfumeProject?serverTimezone=UTC&characterEncoding=UTF-8 - username: perfume - password: password + url: jdbc:mysql://db:3306/perfumePedia?serverTimezone=UTC&characterEncoding=UTF-8 +# url: jdbc:mysql://localhost:3306/PerfumeProject?serverTimezone=UTC&characterEncoding=UTF-8 + username: ${DB_USERNAME} + password: ${DB_PASSWORD} driver-class-name: com.mysql.cj.jdbc.Driver jpa: