AWS에 들어와서
$whoami
$sudo apt update
$sudo apt upgrade
sudo apt install build-essential
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
sudo wget -qO- https://get.docker.com/ | sh
//도커를 깔고 버전 확인
docker -v
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker ${USER}
sudo systemctl restart docker
//AWS 프리티어 버전은 메모리가 낮아 하드에서 끌어다가 씀
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
sudo vi /etc/fstab
/swapfile swap swap defaults 0 0
mkdir data
pwd
docker run -d -v /home/ubuntu/data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -e JENKINS_HOME=/var/jenkins_home -p 8080:8080 -p 50000:50000 --name jenkins -u root jenkins/jenkins
를하여도 메모리가 부족하다고 뜬다면
docker run -d -v /home/ubuntu/data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -e JENKINS_HOME=/var/jenkins_home -e MAVEN_OPTS="-Xmx2g" -p 8080:8080 -p 8081:8081 -p 50000:50000 --name jenkins -u root jenkins/jenkins
이렇게 바꿔서 한번 해보자
젠킨스에 실행중인 상태로 들어가는방법
docker exec -it jenkins /bin/bash
도커로 젠킨스를 들어간후
cd /var/jenkins_home/workspace/pony/target/
위에서 젠킨스홈/워크스페이스/안에 만든다고 하였고 pony는젠킨스폴더 이름임
java -jar pony-0.0.1-SNAPSHOT.war
nohup java -jar ./target/pony-0.0.1-SNAPSHOT.war &
깃에있는 프로젝트를 젠킨스가 가져와 빌드를 진행함
와르로 하는이유는 스프링부트 버전이 업데이트 되면서 jsp를 jar로 할시에 오류가 나타나서 war로 변경하여 빌드를 진행
java -jar ./target/pony-0.0.1-SNAPSHOT.war
타켓 내부에 war파일이 있는지를 확인하고 다음으로 진행
있으면 컨터네이너 내부에 도커를 설치
apt update
apt upgrade
apt install wget
wget -qO- https://get.docker.com/ | sh
docker -v
pipeline {
environment {
repository = "kdh111112/pony" //docker hub id와 repository 이름
DOCKERHUB_CREDENTIALS = credentials('docker-jenkins') // jenkins에 등록해 놓은 docker hub credentials 이름
dockerImage = ''
}
agent any
stages {
stage('Building our image') {
steps {
script {
sh "cp /var/jenkins_home/workspace/pony/target/pony-0.0.1-SNAPSHOT.war /var/jenkins_home/workspace/pony-pipeline" // war 파일을 현재 위치로 복사
dockerImage = docker.build repository + ":latest"
}
}
}
stage('Login'){
steps{
sh 'echo $DOCKERHUB_CREDENTIALS_PSW | docker login -u $DOCKERHUB_CREDENTIALS_USR --password-stdin' // docker hub 로그인
}
}
stage('Deploy our image') {
steps {
script {
sh 'docker push $repository:latest' //docker push
}
}
}
stage('Cleaning up') {
steps {
sh "docker rmi $repository:latest" // docker image 제거
}
}
}
}
주석을 잘보고 변경사항을 변경하자
cd /var/jenkins_home/workspace/pony-pipeline
ls
war 파일이 존재하는것을 확인 !!!
있으면
apt-get install vim
vi Dockerfile
Dockerfile 내부에
FROM adoptopenjdk/openjdk11
WORKDIR /app
COPY ./pony-0.0.1-SNAPSHOT.war .
ENTRYPOINT ["java", "-jar", "-Dserver.port=8081", "pony-0.0.1-SNAPSHOT.war"]
를 내 프로젝트에 맞게 변경하여 적용하자
포트번호가 내 프로젝트와 맞아야함
포트를 안보이게 하려면 보통 80번 포트를 사용함
pipeline {
agent any
stages {
stage('cmd') {
steps {
script {
sh "/var/jenkins_home/workspace/pony-deploy/deploy.sh"
}
}
}
}
}
내 프로젝트에 맞게 수정
cd /var/jenkins_home/workspace/pony-deploy
ls
vi deploy.sh
docker stop spring && docker rm spring | true
docker rmi 도커허브아이디/저장소이름
docker pull 도커허브아이디/저장소이름
docker run -d -p 8081:8081 --name spring 도커허브아이디/저장소명
# 사용하지 않는 불필요한 이미지 삭제 , 현재 쓰고 있는 이미지는 삭제되지 않음
docker rmi -f $(docker images -f “dangling=true” -q) || true
포트를 안보이게 하려면 80:80으로 변경함 8081은 기본포트
root@3733d3e14e12:/var/jenkins_home/workspace/pony-deploy# chmod 777 deploy.sh
구축이 완료된 상태
'ETC' 카테고리의 다른 글
아파치,톰캣,메이븐,폼 (0) | 2023.11.13 |
---|---|
HTTP 응답상태 코드 정리 (0) | 2023.11.13 |
젠킨스 구축방법 (0) | 2023.08.09 |
MSA를 구축하는 간단한 방법 (0) | 2023.08.02 |
oracle,mysql 타입 차이 (0) | 2023.07.14 |