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 |