반응형
docker-compose jenkins
docker, docker-compose 를 사용하여 local 혹은 dev jenkins 를 만들수 있다.
docker 로 jenkins를 설치 하기 위해 3가지 파일을 준비한다.
- .ENV
- 환경설정 파일
- Dcokerfile
- jenkins docker 설정 파일
- docker-compose
docker 를 실행시키기위한 설정 값
.ENV
# VOLUMES : Docker 머신에서 사용하는 물리적인 디렉토리를 실제 디렉토리로 변경
JENKINS_HOME=./jenkins_home
Dockerfile
FROM jenkins/jenkins:lts-jdk11
# user 변경 (root)
USER root
# jenkins 에서 사용할 docker 설정
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
#user 변경 (jenkins)
USER jenkins
# cli plugin 설치
RUN jenkins-plugin-cli --plugins "blueocean:1.25.2 docker-workflow:1.26"
docker-compose.yml
version: '3.7'
services:
jenkins:
build:
context: . #같은 폴더내에 있는 Dockerfile 실행
user: root
ports:
- 8080:8080
- 50000:50000
container_name: jenkins
volumes:
# 볼륨 경로를 로컬에 지정함.
- ${JENKINS_HOME}:/var/jenkins_home
# 로컬의 docker 와, jenkins 내에서 사용할 docker 엔진을 동일한 것을 사용하겠다는 의미임.
- /var/run/docker.sock:/var/run/docker.sock
여기 docker-compose.yml 파일이 없다면 아래와 간이 명령어를 다 적어야 한다.
docker run -d -p 8080:8080 --name=jenkinscicd \
-v /사용자경로/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/myjenkins
매번 이런작업을 해야 하거나, 이미지를 삭제후 시작해야 한다면 불편하기때문에 docker-compose.yml 파일을 만들어 관리 한다.
# docker image 구동
docker-compose up -d
skan@mezzoui-MacBookPro jenkins % docker-compose up -d
Creating network "jenkins_default" with the default driver
Creating jenkins ... done
Jenkins 웹 접속
브라우저를 열어 http://localhost:8080 입력하고 접속하면 아래와같이 패스워드를 입력하라고 나온다.
서버 로그를 보면 패스워드 값이 나오는데 그것을 복사해서 넣어주도록 한다.
아래 로그에서 나온 패스워드를 넣어준다.
docker run options 에 대해 알아보자
- -d --detach : 백그라운드에서 실행
- -p --publish list : port 에 대한 매핑을 설정 한다 ':' 을 기준으로 왼쪽은 로컬포트 오른쪽도커의 이미지 포트이다.
예를들어 8090:8080 은 도커의 포트는 8080이고 외부에서 접속 할수 있는 포트는 8090 이라는 뜻이다. - --name 컨테이너에 대한 이름
- -v --volume list : 컨테이너에 대한 마운트를 물리적인 위치로 마운트 시켜준다.
이것또한 ':'을 기준으로 왼쪽은 실제 로컬의 물리적경로,오른쪽은 도커내컨테이너의 경로이다.
예시) -v /사용자경로/jenkins_home:/var/jenkins_home - -u : 실행할 사용자 지정
- --restart always : docker restart 할때 항상 시작해준다. docker service가 중지되었다가 다시 start 될때 container 도 start 된다.
반응형
'devops > docker' 카테고리의 다른 글
도커 실행 권한문제 - dial unix /var/run/docker.sock: connect: permission denied (0) | 2023.04.17 |
---|---|
docker-compose mysql 설정 및 sql init (0) | 2022.01.14 |
docker-compose 옵션 기본 명령어 (0) | 2021.04.29 |
Docker Redis (0) | 2020.01.10 |
docker-compose 예제 (0) | 2019.06.21 |