Jenkins Server를 직접 설치해야할 때 필요한 문서 (참고용)
Jenkins를 단독으로 설치하려면 JDK 가 필요한데 Docker 파일에는 포함되어 있어 별도 설치 생략 가능
루트 계정으로 사용은 권장하진 않음 추후 계정 생성 후 sudo 명령어 미사용 하도록 변경하는 것이 좋음
ubuntu에서는 Docker 설치 리포지토리가 기본적으로 포함되지 않아, 별도로 Docker 공식 리포지토리를 추가해야 최신 버전을 설치할 수 있습니다. 따라서 GPG 패키지 설치가 필요
ubuntu server 설치
네트워크 설정
포트 오픈 (방화벽 설정이 되어 있다면)
#설치
sudo apt install openssh-server
#실행
sudo systemctl start ssh
#방화벽 적용
sudo ufw allow 22
sudo ufw reload
#필수 패키지 설치
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
sudo apt install openssh-server
#Docker 패키지 검증을 위한 GPG 패키지 설치
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#Docker 레파지토리 추가
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
#Docker 설치
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
#Docker 실행
sudo systemctl start docker
#Docker 사용자 추가
sudo usermod -aG docker $USER (userId)
#변경사항 적용
newgrp docker
#방화벽 적용
sudo ufw allow 50001
sudo ufw reload
#설치 확인
docker --version
#jenkins docker 이미지 받기
docker pull jenkins/jenkins:lts
#jenkins docker 실행
docker run -d --name jenkins -restart on-failure -p 50001:8080 -p 50000:50000 -v /home/${id}/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -e TZ=Asia/Seoul -u $(id -u ${id}):$(id -g ${id}) jenkins/jenkins
-d : 백그라운드 실행
-restart : 컨테이너가 비정상 종료될 경우 자동 재시작
-p : 50001번 포트로 jenkins 웹서비스 8080 포트 바인딩
-p : 50000번 포트 빌드 에이전트 연결을 위한 포트 바인딩
-v : 해당 디렉토리를 컨테이너 디렉토리에 마운트
-v : Docker 데몬 소켓을 컨테이너에 마운트
-e : 컨테이너 시간대를 한국 시간대로 설정
-u : Jenkins 컨테이너를 특정 사용자 권한으로 실행
# 도커 프로세스 확인
docker ps

#nginx 설치
sudo apt-get install nginx
#nginx 실행
systemctl start nginx
#jenkins conf 파일 생성
cd /etc/nginx/conf.d
vi jenkins.conf
upstream jenkins_server {
127.0.0.1:50001;
}
server {
listen 80;
server_name xxx.xxx.xxx.xxx;
access_log /home/${userId}/logs/jenkins_access.log;
location / {
proxy_pass http://jenkins_server;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
이렇게 세팅 하면 50001번 포트에 대한 요청을 받아 해당 Docker Jenkins UI 포트로 포워딩 가능
#저장 후 nginx 재기동
systemctl reload nginx
sudo nginx -t

#클라이언트에서 -> ubuntu 서버 접속
ssh ${userId}@${ip}
#도커 컨테이너 접속
docker exec -it jenkins /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
xxx511085c6a41xx88955b960e1fxx67
