이번 포스트에서는 Docker를 이용하여 아무런 설정이 되어있지 않은 젠킨스를 설치하는 방법을 정리하겠습니다.
프로덕트 레벨에서 Jenkins로 CI 환경을 구성하실 분들은 이 방법보다는 사용하시는 프로젝트의 빌드 환경을 구성하는 Dockerfile을 작성해서 이용하시는 것을 추천합니다.
테스트 환경
OS
: Ubuntu Server 22.04 LTS (HVM)
성능
: t2.micro(free tier)
만약, EC2에서 Jenkins를 설치하신다면 외부에서 Jenkins 접속을 위해서 Security group의 인바운드 규칙 설정을 통해 8080 포트를 열어주셔야 합니다.
Jenkins 컨테이너 실행
이미지는 jenkins/jenkins 이미지의 latest 버전을 사용하여 컨테이너를 실행해주겠습니다.
아래의 명령어로 젠킨스 컨테이너를 실행해줍니다.
$ docker run -d --name jenkins --restart=on-failure \
-p 8080:8080 \
-v /var/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-e TZ=Asia/Seoul \
-u root \
jenkins/jenkins
명령어의 옵션은 아래와 같습니다
--restart
-> on-failure 옵션은 비정상 종료시 컨테이너를 재실행합니다.
-p
-> 외부 접속을 위해 호스트의 8080 포트를 바인딩 해주었습니다.
-v
-> 호스트의 var/jenkins 디렉토리를 호스트 볼륨으로 설정하여 jenkins 컨테이너의 home 디렉토리에 마운트시켰습니다.
docker.sock 파일은 도커 데몬과 통신할 수 있는 소켓 파일입니다. docker.sock 파일을 컨테이너에 마운트시켜서 도커 명령을 실행할 수 있게 해줍니다. 이러한 방식을 dood(docker out of docker)라고 합니다.
-e
-> 젠킨스의 timezone을 KST 기준으로 설정해줍니다.
-u
-> 추후 권한 문제가 발생할 수 있기 때문에 user 옵션을 root 사용자로 주었습니다.
초기 비밀번호 입력
젠킨스 컨테이너를 실행했으면 http://<ip 주소>:<8080>
를 입력하여 젠킨스에 접속해줍니다.
접속하면 초기 비밀번호를 입력하라는 창이 뜹니다.
$ docker exec -it cfb /bin/bash
$ cat /var/jenkins_home/secrets/initialAdminPassword
c4e80c99109448f79fad07c6133466c8 # 초기 비밀번호
초기 비밀번호는 컨테이너의 /var/jenkins_home/secrets/initialAdminPassword에 저장되어 있습니다.
플러그인 설치
Install suggested plugins를 선택해줍니다. 따로 설치하고 싶은 플러그인이 있다면 추후에 설치할 수 있습니다.
어드민 계정 생성
어드민 계정을 생성하는 부분입니다. 빈칸을 채워서 계정을 생성해줍니다.
Jenkins URL 설정
접속할 Jenkins URL을 설정해줍니다.
젠킨스 설치 완료
정상적으로 설치가 완료되면 젠킨스 대시보드 화면이 나옵니다.
References
https://github.com/jenkinsci/docker/blob/master/README.md
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=isc0304&logNo=222274955992
https://medium.com/hgmin/jenkins-docker-timezone-3bb80efad3d4