From 393a27fc4b0d937130044e5213d30407d0d9f783 Mon Sep 17 00:00:00 2001 From: minuk926 Date: Fri, 29 Jul 2022 19:01:29 +0900 Subject: [PATCH] =?UTF-8?q?config:=20docker=20=EB=93=B1=20=EB=B9=8C?= =?UTF-8?q?=EB=93=9C=20=EC=86=8C=EC=8A=A4=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 22 --- .../docker-github-package-ec2-deploy.yml | 74 --------- Dockerfile | 46 ------ Jenkinsfile | 148 ------------------ appspec.yml | 26 --- deploy.sh | 25 --- docker-compose.yml | 27 ---- 7 files changed, 368 deletions(-) delete mode 100644 .dockerignore delete mode 100644 .github/workflows/docker-github-package-ec2-deploy.yml delete mode 100644 Dockerfile delete mode 100644 Jenkinsfile delete mode 100644 appspec.yml delete mode 100644 deploy.sh delete mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 6f9c5df..0000000 --- a/.dockerignore +++ /dev/null @@ -1,22 +0,0 @@ -node_modules -npm-debug.log - -# .git 과 .cache 폴더를 무시 -.git -.cache - -# ignore all *.class files in all folders, including build root -# 모든 폴더안에 있는 모든, *.class 파일들을 무시 -**/*.class - -# 모든 마크다운 파일들 (md) 파일들을 무시, -# 모든 README*.md 파일 무시 -*.md -IREADME*.md - -.gradle -build -.idea -out -work -data \ No newline at end of file diff --git a/.github/workflows/docker-github-package-ec2-deploy.yml b/.github/workflows/docker-github-package-ec2-deploy.yml deleted file mode 100644 index f5fbeaf..0000000 --- a/.github/workflows/docker-github-package-ec2-deploy.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Deploy to Amazon EC2(github -> package -> EC2 docker image) - -on: - push: - branches: [ master ] # push할 때 동작할 branch를 입력해주세요. - workflow_dispatch: - inputs: - logLevel: - description: 'Log level' - required: true - default: 'debug' - tags: - description: 'Run action' - required: true - default: 'Run ' -env: - #DOCKER_IMAGE: ghcr.io/{Repository author}/{Repository name} # 예를 들면, ghcr.io/dolphago/github-follow-unfollow - DOCKER_IMAGE: ghcr.io/${{ github.actor }}/xit-framework - VERSION: ${{ github.sha }} - NAME: xit-framework-bo - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Check out source code - uses: actions/checkout@v2 - - name: Set up docker buildx - id: buildx - uses: docker/setup-buildx-action@v1 - - name: Cache docker layers - uses: actions/cache@v2 - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ env.VERSION }} # runner 설정에서 읽어들일거에요. - restore-keys: | - ${{ runner.os }}-buildx- - - name: Login to ghcr - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GIT_ACS_TOKEN }} - - name: Build and push - id: docker_build - uses: docker/build-push-action@v2 - with: - builder: ${{ steps.buildx.outputs.name }} - push: true #${{ github.event_name != 'pull_request' }} - tags: ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }} - - deploy: - needs: build - name: Deploy - runs-on: [ self-hosted, label-development ] - steps: - - name: Login to ghcr - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GIT_ACS_TOKEN }} - - name: Docker run - #docker ps -q --filter "name=xit-framework-bo" | grep -q . && docker stop xit-framework-bo && docker rm -fv xit-framework-bo - #docker run -d -p 8090:8090 --name xit-framework-bo --restart always ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }} - #docker run -d -p 8090:8090 --name xit-framework-bo --restart always ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }} - #docker ps -q --filter "name=xit-framework-bo" | grep -q . && docker stop xit-framework-bo && docker rm -fv xit-framework-bo - #docker stop ${{ env.NAME }} && docker rm ${{ env.NAME }} && docker rmi ${{ env.DOCKER_IMAGE }}:latest - run: | - docker run -d -p 8090:8090 --name ${{ env.NAME }} --restart always ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }} - sleep 5 - docker image prune -a - sleep 5 \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 394ad63..0000000 --- a/Dockerfile +++ /dev/null @@ -1,46 +0,0 @@ -FROM gradle:7-jdk8 AS build -WORKDIR /application -COPY --chown=gradle:gradle ./ ./ -#COPY ./ ./ -#RUN chmod +x ./gradlew -RUN gradle clean bootWar - -FROM openjdk:8-jre-slim -WORKDIR /app -COPY --from=build /application/build/libs/*.war ./ROOT.war -EXPOSE 8090 -#ENTRYPOINT ["java", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-Dspring.profiles.active=dev","-jar"," /app/ROOT.war"] -ENTRYPOINT ["java", "-jar", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-Dspring.profiles.active=dev", "/app/ROOT.war"] -#ENTRYPOINT ["java", "-Dspring.profiles.active=dev", "-jar", "/application/build/libs/core-0.0.1-SNAPSHOT.war"] - -#FROM openjdk:8-jdk-alpine as builder -#WORKDIR application -#COPY ./ ./ -#RUN chmod +x ./gradlew -##--args='--spring.profiles.active=dev' -#RUN ./gradlew clean bootWar -##CMD["./gradlew", "-Dspring.profiles.active=local", "clean", "bootWar"] -# -#EXPOSE 8090 8443 -#ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=dev", "/application/build/libs/core-0.0.1-SNAPSHOT.war"] - -#FROM postgres -#FROM tomcat:9.0 -#ENV TZ="Asia/Seoul" -#RUN ln -fns /usr/share/zoneinfo/$TZ /etc/localtime -#RUN echo $TZ > /etc/timezone -#CMD ["/usr/local/tomcat/bin/catalina.sh", "stop"] -#CMD sleep 3 -# -#RUN rm -rf /usr/local/tomcat/webapps/ROOT -#COPY --from=builder /application/build/libs/core-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war -#EXPOSE 8090 8443 -#CMD ["/usr/local/tomcat/bin/catalina.sh", "run"] - -#FROM tomcat:9.0 -#ENV TZ="Asia/Seoul" -#RUN ln -fns /usr/share/zoneinfo/$TZ /etc/localtime -#RUN echo $TZ > /etc/timezone -##RUN rm -rf /usr/local/tomcat/webapps/ROOT -#COPY repo/target/kuaa-management.war /usr/local/tomcat/webapps/ROOT.war -#EXPOSE 8009 8080 8443 \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 6c44b43..0000000 --- a/Jenkinsfile +++ /dev/null @@ -1,148 +0,0 @@ -pipeline { - agent any - stages { - stage('Git Pull') { - steps { - script { - try { - //echo 'prepare' - //git branch: "master", credentialsId: "$GIT_CREDENTIALS_ID", url: 'git@github.com:minuk926/xit-framework.git/' - git branch: 'master', url: 'git@github.com:minuk926/xit-framework.git', credentialsId: 'jenkins_aws_connect_key' - sh rm -rf .git - sh 'ls -al' - env.cloneResult=true - } catch (error) { - print(error) - env.cloneResult=false - currentBuild.result = 'FAILURE' - } - } - } - } - stage('Build WAR') { - when { - expression { - return env.cloneResult ==~ /(?i)(Y|YES|T|TRUE|ON|RUN)/ - } - } - steps { - script{ - try { - sh """ - rm -rf deploy - mkdir deploy - """ - sh "sudo sed -i \"s/module_name=.*/module_name=${env.JOB_NAME}\\:${env.BUILD_NUMBER}/g\" /var/lib/jenkins/workspace/${env.JOB_NAME}/src/main/resources/application.properties" - sh "cat /var/lib/jenkins/workspace/${env.JOB_NAME}/src/main/resources/application.properties" - sh 'gradlew clean bootWar' - sh """ - cd deploy - cp /var/lib/jenkins/workspace/${env.JOB_NAME}/build/libs/*.war ./ROOT.war - """ - env.gradleBuildResult=true - } catch (error) { - print(error) - echo 'Remove Deploy Files' - sh "sudo rm -rf /var/lib/jenkins/workspace/${env.JOB_NAME}/*" - env.gradleBuildResult=false - currentBuild.result = 'FAILURE' - } - } - } - post { - success { - slackSend channel: '#pipeline-deploy', color: 'good', message: "The pipeline ${currentBuild.fullDisplayName} stage Build WAR successfully." - } - failure { - slackSend channel: '#pipeline-deploy', color: 'danger', message: "The pipeline ${currentBuild.fullDisplayName} stage Build WAR failed." - } - } - } - stage('Docker Build'){ - when { - expression { - return env.mavenBuildResult ==~ /(?i)(Y|YES|T|TRUE|ON|RUN)/ - } - } - steps { - script{ - try { - sh""" - #!/bin/bash - cd ./deploy - cat>Dockerfile<<-EOF -FROM ${ECR_BASE_URL}:latest -ADD ${env.JOB_NAME}.jar /home/${env.JOB_NAME}.jar -CMD nohup java -jar /home/${env.JOB_NAME}.jar 1> /dev/null 2>&1 -EXPOSE 9000 -EOF""" - sh""" - cd ./deploy - docker rmi -f \$(docker images -q) - \$(aws ecr get-login --no-include-email --region ap-northeast-2) - docker build -t ${SERVICE_NAME.toLowerCase()} . - docker tag ${SERVICE_NAME.toLowerCase()}:latest ${ECR_TASK_URL}:ver${env.BUILD_NUMBER} - docker push ${ECR_TASK_URL}:ver${env.BUILD_NUMBER} - """ - echo 'Remove Deploy Files' - sh "sudo rm -rf /var/lib/jenkins/workspace/${env.JOB_NAME}/*" - env.dockerBuildResult=true - } catch (error) { - print(error) - echo 'Remove Deploy Files' - sh "sudo rm -rf /var/lib/jenkins/workspace/${env.JOB_NAME}/*" - env.dockerBuildResult=false - currentBuild.result = 'FAILURE' - } - } - } - post { - success { - slackSend channel: '#jenkins', color: 'good', message: "The pipeline ${currentBuild.fullDisplayName} stage Docker Build successfully." - } - failure { - slackSend channel: '#jenkins', color: 'danger', message: "The pipeline ${currentBuild.fullDisplayName} stage Docker Build failed." - } - } - } - stage('Deploy'){ - when { - expression { - return env.dockerBuildResult ==~ /(?i)(Y|YES|T|TRUE|ON|RUN)/ - } - } - steps { - script{ - try { - withAWS(credentials:"$AWS_CREDENTIALS") { - sh "aws ecs describe-task-definition --task-definition ${TASK_DEFINITION} --region ap-northeast-2 --query \"taskDefinition.{\"family\": family, \"containerDefinitions\": containerDefinitions, \"executionRoleArn\": executionRoleArn,\"requiresCompatibilities\": requiresCompatibilities}\" --output json > task-definition.json" - def task_repository_name = sh( - script:""" - echo \"${ECR_TASK_URL}\" | awk \'{ split(\$0, arr, \"/\"); print arr[2] }\' - """, - returnStdout: true - ).trim() - sh "sudo sed -i \"9s/${task_repository_name}:.*/${task_repository_name}:ver${env.BUILD_NUMBER}\\\",/g\" task-definition.json" - sh "cat task-definition.json" - sh "aws ecs register-task-definition --cli-input-json file://task-definition.json --region ap-northeast-2" - sh "aws ecs update-service --cluster ${CLUSTER_NAME} --service ${SERVICE_NAME} --task-definition ${TASK_DEFINITION} --region ap-northeast-2" - } - } catch (error) { - print(error) - echo 'Remove Deploy Files' - sh "sudo rm -rf /var/lib/jenkins/workspace/${env.JOB_NAME}/*" - currentBuild.result = 'FAILURE' - } - } - } - post { - success { - slackSend channel: '#jenkins', color: 'good', message: "The pipeline ${currentBuild.fullDisplayName} successfully." - } - failure { - slackSend channel: '#jenkins', color: 'danger', message: "The pipeline ${currentBuild.fullDisplayName} failed." - } - } - } - } -} \ No newline at end of file diff --git a/appspec.yml b/appspec.yml deleted file mode 100644 index 8a04999..0000000 --- a/appspec.yml +++ /dev/null @@ -1,26 +0,0 @@ -version: 0.0 -os: linux - -files: - - source: / - destination: /home/ubuntu/admin/bo # 배포 파일 도착 폴더 - overwrite: yes # 안돼면, 아래 hooks BeforeInstall 추가, 파일 삭제 -permissions: - - object: / - pattern: "**" # 모든 파일의 권한 설정 - owner: ubuntu - group: ubuntu -# mode: 755 - -hooks: -# BeforeInstall: "BeforeInstallHookFunctionName" -# AfterInstall: "AfterInstallHookFunctionName" -# ApplicationStop: -# - timeout: 2 - ApplicationStart: # 파일이 도착 후 실행 - - location: deploy.sh - timeout: 60 # 60 안에 실행, 60 뒤엔 배포 실패로 변경 - runas: ubuntu -# ValidateService: # deplo 실행 후, 빌드파일이 배포가 되었다면, 서버체크 -# - location: server-check.sh -# timeout: 60 \ No newline at end of file diff --git a/deploy.sh b/deploy.sh deleted file mode 100644 index 63c8fd0..0000000 --- a/deploy.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash - -REPOSITORY=/home/ubuntu/xit-framework/bo -cd $REPOSITORY - -APP_NAME=xit-framework-bo -WAR_NAME=$(ls $REPOSITORY | grep '.war' | tail -n 1) -WAR_PATH=$REPOSITORY/$WAR_NAME -echo "> war 파일명: $WAR_NAME" >> /home/ubuntu/xit-framework/bo/deploy.log -echo "> war 파일명: $WAR_PATH" >> /home/ubuntu/xit-framework/bo/deploy.log - -CURRENT_PID=$(pgrep -f $APP_NAME) -echo "> CURRENT_PID : $CURRENT_PID" >> /home/ubuntu/xit-framework/bo/deploy.log - -if [ -z $CURRENT_PID ] -then - echo "> 종료할것 없음." -else - echo "> kill -9 $CURRENT_PID" - kill -9 $CURRENT_PID - sleep 5 -fi -rm -rf work/ -echo "> $WAR_PATH 배포" -nohup java -jar -Dspring.profiles.active=local $WAR_PATH > /dev/null 2> /dev/null < /dev/null & \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 5825c42..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,27 +0,0 @@ -version: "3" -services: - backend: - build: - context: . - dockerfile: Dockerfile - ports: - - "8090:8090" - stdin_open: true -# volumes: -# - /app/node_modules -# - ./backend:/app -# environment: -# MYSQL_HOST: mysql -# MYSQL_USER: root -# MYSQL_ROOT_PASSWORD: johnahn777 -# MYSQL_DATABASE: myapp -# MYSQL_PORT: 3306 -# -# -# nginx: -# restart: always -# build: -# dockerfile: ../Dockerfile -# context: ./nginx -# ports: -# - "3000:80" \ No newline at end of file