Docker 컨테이너 배포

2024. 4. 17. 10:40·CS

Jenkins, Backend, DB, Redis 등을 배포해보려 한다.

첫번째로 이전에

AWS EC2 인스턴스를 프리티어사용하여 시작하고

EC2에서 스왑메모리 설정 

EC2에 도커를 설치

그때그때 인바운드 규칙 설정을 해야한다.

 

1. Docker 를 이용하여 Jenkins 컨테이너 생성

$ docker run --name jenkins  -e TZ=Asia/Seoul -d -p 9090:8080 -p 50000:50000 \
-v /home/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock \
-u root 84eb5f85358

2. Jenkins 비밀번호 접속 

$ sudo docker exec -it jenkins bash -c "cat /var/jenkins_home/secrets/initialAdminPassword"

 

3. Jenkins 컨테이너 내 Docker 설치 

apt-get update && \
apt-get -y install apt-transport-https \
  ca-certificates \
  curl \
  gnupg2 \
  zip \
  unzip \
  software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable" && \
apt-get update && \
apt-get -y install docker-ce

3. DB 컨테이너 생성

생성전 docker pull 을 이용, 이미지 를 받아오는 과정 필요하다.

$ docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<password> 
-d -p 3306:3306 mysql:latest

4. Redis 컨테이너 생성

생성전 docker pull 을 이용, 이미지 를 받아오는 과정 필요하다.

$ docker run -p 6379:6379 --name (redis 컨테이너 이름) 
-d redis:latest --requirepass "(비밀번호)"

# redis-cli로 접근
$ docker exec -i -t (redis 컨테이너 이름) redis-cli -a "비밀번호"

#여기서 ping 을 입력하면 pong 으로 응답해야한다.

5. Jenkins CICD 구축

jenkins 내 webhook 과 

gitLab github 등의 webhook을 설정해주고

Jenkinsfile , Dockerfile을 작성한다.

 

Jenkinsfile 은 이렇게 작성하였다.

pipeline {
    agent any
    tools {
        gradle 'gradle'
    }
    stages {
        stage('clone'){
            steps{
                git branch: 'main', url: 'https://github.com/GEISHAz/test.git'
            }
        }
        stage('Gradle build') {
                steps {
                    dir('./testserver') {
                            sh 'chmod +x ./gradlew'
        					sh './gradlew clean build'
                        }
                    }
                }
        stage('Container build') {
            steps {
                dir("./testserver") {
                    sh 'docker stop backend || true && docker rm backend || true'
                    sh 'docker rmi backend || true'
                    sh 'docker build -t backend .'
                }
            }
        }
        stage('back-deploy') {
            steps {
                sh 'docker run -it -d -p 8080:8080 --name backend backend'
            }
        }
    }
}

 

 Dockerfile은 아래와 같이 작성하였다.

# Dockerfile

# jdk21 Image Start
FROM openjdk:21

# 인자 설정 - JAR_File
ARG JAR_FILE=build/libs/*SNAPSHOT.jar

# jar 파일 복제
COPY ${JAR_FILE} app.jar

# 인자 설정 부분과 jar 파일 복제 부분 합쳐서 진행해도 무방
#COPY build/libs/*.jar app.jar

# 실행 명령어
ENTRYPOINT ["java", "-jar", "app.jar"]

'CS' 카테고리의 다른 글

LRU - 페이지 교체 알고리즘  (0) 2024.06.02
지식 대출  (0) 2024.05.21
15가지 리눅스 기본 명령어  (0) 2024.04.13
CICD 연습 과정  (0) 2024.04.13
SSH 는 무엇일까?  (0) 2024.03.11
'CS' 카테고리의 다른 글
  • LRU - 페이지 교체 알고리즘
  • 지식 대출
  • 15가지 리눅스 기본 명령어
  • CICD 연습 과정
Geisha
Geisha
개발 일기
  • Geisha
    Geisha
    Geisha
  • 전체
    오늘
    어제
    • 분류 전체보기 (311) N
      • Algorithm & Data Structures (235) N
        • BOJ (93) N
        • SWEA (1)
        • Programers (137) N
        • Data Structures (3)
      • DB (23) N
        • SQL (17) N
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • 운영체제 (13)
        • 네트워크 (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SQL
    전위순회
    programmers
    unionfind
    DynamicProgramming
    dp
    Union-Find
    구현
    dfs
    알고리즘
    투포인터
    골드
    이분탐색
    동적계획법
    baekjoon
    유니온파인드
    Dijkstra
    후위순회
    BFS
    경로압축
    algorithm
    백트래킹
    백준
    PriorityQueue
    Stack
    프로그래머스
    Java
    스택
    다익스트라
    binarySearch
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Geisha
Docker 컨테이너 배포
상단으로

티스토리툴바