diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 48dc409..ce890c6 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -1,4 +1,4 @@ -name: meetup Server CI/CD with Docker +name: meetup Server CI/CD with Docker. on: push: @@ -16,10 +16,10 @@ jobs: steps: - uses: actions/checkout@v3 - - name: 🍃 JDK 17로 설정합니다. + - name: 🍃 JDK 11로 설정합니다. uses: actions/setup-java@v3 with: - java-version: '17' + java-version: '11' distribution: 'temurin' diff --git a/Dockerfile b/Dockerfile index 3ef1a25..30fba83 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,4 @@ -FROM openjdk:17-alpine +#ci/cd +FROM openjdk:11-jdk COPY ./build/libs/server-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file diff --git a/build.gradle b/build.gradle index 7d2ebcd..af53e2b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,20 +1,14 @@ plugins { id 'java' - id 'org.springframework.boot' version '3.1.4' - id 'io.spring.dependency-management' version '1.1.3' + id 'org.springframework.boot' version '2.7.16' + id 'io.spring.dependency-management' version '1.0.15.RELEASE' } -group = 'meetup' +group = 'com.groupD' version = '0.0.1-SNAPSHOT' java { - sourceCompatibility = '17' -} - -configurations { - compileOnly { - extendsFrom annotationProcessor - } + sourceCompatibility = '11' } repositories { @@ -22,12 +16,18 @@ repositories { } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + + // lombok compileOnly 'org.projectlombok:lombok' - runtimeOnly 'com.mysql:mysql-connector-j' annotationProcessor 'org.projectlombok:lombok' - testImplementation 'org.springframework.boot:spring-boot-starter-test' + + // jpa + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + + //db + runtimeOnly 'com.mysql:mysql-connector-j' implementation 'mysql:mysql-connector-java:8.0.33' } diff --git a/docker-compose.yml b/docker-compose.yml index cfbef9a..3d3820f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,3 +1,4 @@ +#ci/cd version: '3' services: blue: diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 1c64d6e..c52d748 100644 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -1,47 +1,59 @@ #!/bin/bash -IS_GREEN_EXIST=$(docker ps | grep green) + +IS_GREEN=$(docker ps | grep green) # 현재 실행중인 App이 blue인지 확인합니다. DEFAULT_CONF=" /etc/nginx/nginx.conf" -if [ -z $IS_GREEN_EXIST ];then + +if [ -z $IS_GREEN ];then # blue라면 + echo "### BLUE => GREEN ####" - echo ">>> green image를 pull합니다." - docker-compose pull green - echo ">>> green container를 up합니다." - docker-compose up -d green + + echo "1. get green image" + docker-compose pull green # green으로 이미지를 내려받습니다. + + echo "2. green container up" + docker-compose up -d green # green 컨테이너 실행 + while [ 1 = 1 ]; do - echo ">>> green health check 중..." + echo "3. green health check..." sleep 3 - REQUEST=$(curl http://127.0.0.1:8082) - if [ -n "$REQUEST" ]; then - echo ">>> 🍃 health check success !" - break; - fi + + REQUEST=$(curl http://127.0.0.1:8082) # green으로 request + if [ -n "$REQUEST" ]; then # 서비스 가능하면 health check 중지 + echo "health check success" + break ; + fi done; - sleep 3 - echo ">>> nginx를 다시 실행 합니다." + + echo "4. reload nginx" sudo cp /etc/nginx/nginx.green.conf /etc/nginx/nginx.conf sudo nginx -s reload - echo ">>> blue container를 down합니다." + + echo "5. blue container down" docker-compose stop blue -# green이 실행 중이면 blue를 up합니다. else echo "### GREEN => BLUE ###" - echo ">>> blue image를 pull합니다." + + echo "1. get blue image" docker-compose pull blue - echo ">>> blue container up합니다." + + echo "2. blue container up" docker-compose up -d blue + while [ 1 = 1 ]; do - echo ">>> blue health check 중..." + echo "3. blue health check..." sleep 3 - REQUEST=$(curl http://127.0.0.1:8081) - if [ -n "$REQUEST" ]; then - echo ">>> 🍃 health check success !" - break; + REQUEST=$(curl http://127.0.0.1:8081) # blue로 request + + if [ -n "$REQUEST" ]; then # 서비스 가능하면 health check 중지 + echo "health check success" + break ; fi done; - sleep 3 - echo ">>> nginx를 다시 실행 합니다." + + echo "4. reload nginx" sudo cp /etc/nginx/nginx.blue.conf /etc/nginx/nginx.conf sudo nginx -s reload - echo ">>> green container를 down합니다." + + echo "5. green container down" docker-compose stop green fi \ No newline at end of file diff --git a/src/main/java/meetup/server/ServerApplication.java b/src/main/java/meetup/server/ServerApplication.java index 8eecc69..53a02a3 100644 --- a/src/main/java/meetup/server/ServerApplication.java +++ b/src/main/java/meetup/server/ServerApplication.java @@ -5,7 +5,7 @@ @SpringBootApplication public class ServerApplication { -//q +//qq public static void main(String[] args) { SpringApplication.run(ServerApplication.class, args); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 1b238de..70b2516 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,4 +1,5 @@ server: + port: 8080 spring: