[CI CD] Ubuntu에 Jenkins 설치하기 (with. Docker)
1. Ubuntu에 Jenkins 설치하기
Ubuntu 쉘에 접속했다고 가정하겠습니다.
원하는 경로로 이동 후, 다음과 같이 Dockerfile을 작성합니다.
FROM jenkins/jenkins:jdk11
# 도커를 실행하기 위한 root 계정으로 전환
USER root
# 도커 설치
COPY docker_install.sh /docker_install.sh
RUN chmod +x /docker_install.sh
RUN /docker_install.sh
# 설치 후 'docker' 라는 이름의 그룹을 만든 후, jenkins 계정 생성 후 해당 그룹으로 변경
RUN groupadd -f docker
RUN usermod -aG docker jenkins
USER jenkins
그 후, 위 Dockerfile에 명시된 docker_install.sh 쉘 스크립트 파일을 다음과 같이 작성합니다.
#!/bin/sh
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
다음으로 위 Dockerfile을 가지고 도커 이미지를 생성한 후, 이미지가 제대로 생성되었는지 확인합니다.
docker build 명령어는 Dockerfile을 찾고 읽어들여 도커 이미지를 생성합니다. 이때 'Dockerfile'이라는 파일명이 디폴트값이기 때문에 별도로 지정해주지 않았지만, 만약 'Dockerfile.dev'와 같이 Dockerfile 명을 다르게 줬다면 도커 파일명을 지정해줘야합니다.
$ docker build -t jenkins/myjenkins . // Dockerfile을 가지고 도커 이미지를 만듭니다. (빌드)
$ docker images // 도커 이미지가 제대로 생성되었는지 확인합니다.
그 후, 생성한 도커 이미지를 가지고 컨테이너를 실행합니다.
-p 옵션은 --published 의 약어로 컨테이너 내에서 8080 포트로 실행되는 젠킨스를 Host 서버(여기선 Ubuntu)의 9090 포트와 매핑시키는걸 의미합니다. 이렇게 해주면 Ubuntu 서버의 9090 포트로 접속하면 매핑된 컨테이너의 포트로 들어가지게 됩니다.
$ docker run -d -p 9090:8080 --name=jenkinscicd
이때, 위와 같이 docker run 명령어를 터미널에 직접 입력해줄 수도 있지만, 이렇게 되면 매번 명령어를 직접 입력해야하기 때문에 번거롭고, 어떤 옵션을 주어 실행했는지 까먹기 십상입니다. 그래서 보통 docker-compose.yml 파일을 이용합니다.
아래와 같이 젠킨스를 실행하기 위한 스크립트를 작성할 수 있습니다.
version: "3"
services:
jenkins:
privileged: true
build: .
restart: always
volumes:
- /home/ubuntu/myTest/jenkinsDir:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "9090:8080"
- "50010:50000"
expose:
- "8080"
- "50000"
environment:
TZ: "Asia/Seoul"
이제 'docker-compose up' 명령어를 터미널에 치면 젠킨스가 도커 컨테이너로 정상 실행됩니다.
'DevOps > CI CD' 카테고리의 다른 글
[CI CD] Jenkins와 Gitlab 연동 및 CI/CD 구축하기 (1) | 2022.02.18 |
---|---|
[CI CD] 배포 자동화 (0) | 2020.09.05 |
[CI CD] 테스트/빌드 자동화 (0) | 2020.09.05 |
댓글
이 글 공유하기
다른 글
-
[CI CD] Jenkins와 Gitlab 연동 및 CI/CD 구축하기
[CI CD] Jenkins와 Gitlab 연동 및 CI/CD 구축하기
2022.02.18 -
[CI CD] 배포 자동화
[CI CD] 배포 자동화
2020.09.05 -
[CI CD] 테스트/빌드 자동화
[CI CD] 테스트/빌드 자동화
2020.09.05