반응형
| /home/ubuntu/jenkins/Dockerfile
FROM jenkins/jenkins:lts
USER root
# Install Docker
RUN apt-get update && \\
apt-get -y install apt-transport-https \\
ca-certificates \\
curl \\
gnupg2 \\
zip \\
unzip \\
software-properties-common && \\
. /etc/os-release && \\
curl -fsSL <https://download.docker.com/linux/${ID}/gpg> > /tmp/dkey; apt-key add /tmp/dkey && \\
add-apt-repository \\
"deb [arch=amd64] <https://download.docker.com/linux/${ID}> \\
$(lsb_release -cs) \\
stable" && \\
apt-get update && \\
apt-get -y install docker-ce
# Install docker-compose
RUN curl -L "<https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$>(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \\
chmod +x /usr/local/bin/docker-compose && \\
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# Add jenkins user to docker group
RUN usermod -aG docker jenkins
USER jenkins
이 Dockerfile은 Jenkins 이미지를 기반으로 Docker와 Docker Compose를 설치하는 Jenkins Docker 이미지를 생성한다. 이 Dockerfile은 다음 단계들을 수행한다.
- Jenkins 이미지를 불러온다 Jenkins는 자동화 서버이며, 이 Dockerfile은 Jenkins의 Long Term Support(LTS) 버전 이미지를 사용한다. 이 이미지는 안정성을 위해 선호되는 Jenkins 버전이다.
- ROOT 유저로 전환 Docker 이미지의 기본 유저가 ROOT가 아닐 수 있기 때문에, 패키지 설치 등의 작업을 수행하기 위해 ROOT 유저로 전환한다.
- Docker를 설치 Docker를 설치하기 위해 필요한 패키지들을 우선 설치하고 Docker의 apt 레포지토리를 추가한 뒤 Docker CE를 설치한다.
- Docker Compose 설치 Docker Compose는 여러 Docker 컨테이너를 관리하고 실행하는데 사용되는 도구이다. Docker Compose를 설치하고 실행 권한을 부여한 후, 사용자의 편의를 위해 /usr/bin/docker-compose에 심볼릭 링크를 생성한다.
- Jenkins 유저를 Docker 그룹에 추가 Jenkins 유저가 Docker 명령을 실행할 수 있도록 Docker 그룹에 추가한다. 이를 통해 Jenkins 파이프라인 스크립트에서 Docker 명령을 사용할 수 있게 된다.
- 다시 Jenkins 유저로 전환 마지막으로 다시 Jenkins 유저로 전환하여, Jenkins 서비스가 해당 유저의 권한으로 실행되게 합니다. 이는 보안을 위한 중요한 단계입니다.
결과적으로 이 Dockerfile은 Jenkins와 Docker, Docker Compose가 모두 설치된 이미지를 생성하며, 이 이미지를 사용해 Jenkins를 실행하면 Jenkins 파이프라인에서 Docker와 Docker Compose 명령을 사용할 수 있게 된다.
| /home/ubuntu/jenkins/docker-compose.yml
# docker-compose.yml
version: '3.7'
services:
jenkins:
build:
context: .
container_name: jenkins
user: root
ports:
- 8080:8080
volumes:
- ./jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
이 docker-compose.yml 파일은 Docker Compose를 사용하여 Jenkins 서비스를 구성하고 실행하는 방법을 정의한다.
이 파일은 다음과 같은 내용을 포함하고 있다.
- version: '3.7': 이는 이 파일이 사용하는 Docker Compose 파일의 버전을 나타낸다. '3.7'은 Docker Compose 버전 3.7의 구성 형식을 사용한다는 것을 의미한다.
- services: 이 구성에서 실행할 서비스들을 정의한다. 이 경우에는 'jenkins'라는 하나의 서비스만이 정의되어 있다.
- jenkins: 'jenkins' 서비스의 구성을 정의한다.
- build: Jenkins 서비스에 대한 Docker 이미지를 빌드하는 방법을 정의한다. 'context: .'은 Dockerfile이 현재 디렉토리에 위치해 있음을 의미합니다.
- container_name: 생성되는 컨테이너의 이름을 'jenkins'으로 설정한다.
- user: 컨테이너 내에서 실행되는 프로세스의 유저를 'root'로 설정한다.
- ports: 호스트와 컨테이너 사이에 포트 매핑을 설정한다. '8080:8080'은 호스트의 8080번 포트를 컨테이너의 8080번 포트에 연결한다는 것을 의미한다. 이로 인해 사용자는 웹 브라우저에서 '도메인명:8080'으로 접속하여 Jenkins 서비스에 접근할 수 있게 된다.
- volumes: 호스트와 컨테이너 사이에 볼륨을 공유하도록 설정한다. 이 설정은 두 가지 볼륨을 생성한다:
- ./jenkins_home:/var/jenkins_home: 이 설정은 호스트의 현재 디렉토리 하위의 'jenkins_home' 디렉토리를 컨테이너의 '/var/jenkins_home' 디렉토리에 연결한다. Jenkins는 '/var/jenkins_home' 디렉토리를 데이터 저장용으로 사용한다. 이 볼륨을 통해 Jenkins의 데이터를 컨테이너 외부에서도 유지하고 접근할 수 있게 된다.
- /var/run/docker.sock:/var/run/docker.sock: 이 설정은 호스트의 Docker daemon과 컨테이너를 연결한다. 이렇게 하면 컨테이너 내부에서도 호스트의 Docker를 사용할 수 있게 된다. 이는 Jenkins에서 Docker 명령을 실행할 수 있게 해 주는 중요한 설정이다.
docker-compose.yml 파일이 존재하는 경로에서 "docker compose up -d" 실행한다.
이후, "sudo docker logs 컨테이너ID" 명령어를 수행하고 찍힌 로그 암호를 복사해둔다.
“서버도메인:8080” 으로 접속하여 복사한 암호를 붙여넣는다.
플러그인들이 자동으로 설치되는데 설치가 실패된다면, Dashboard > Jenkins 관리 > Plugin Manager로 접속한 뒤,
Available plugins에서 필요한 플러그인을 설치한다.
반응형
'기타 > 인프라 구축과정' 카테고리의 다른 글
[Infra] 5. Jenkins Front 빌드 & 배포 - HelloWorld Project (0) | 2023.05.24 |
---|---|
[Infra] 4. Jenkins Back 빌드 & 배포 - HelloWorld Project (0) | 2023.05.24 |
[문제점] Infra. Nginx 오류 (80포트 중복) - HelloWorld Project (0) | 2023.05.24 |
[Infra] 2. Nginx 설치 및 HTTPS 설정 - HelloWorld Project (0) | 2023.05.24 |
[Infra] 1. EC2 환경 구축 - HelloWorld Project (0) | 2023.05.24 |
댓글