![[DevOps] Docker와 Jenkins로 최적화 CI/CD 자동화 파이프라인 구축 : Application Env Build](/static/759f5747fcb1e4871fc43c4b23bda3cd/97f9c/jenkins.png)
- gitlab
- Jenkins
- Docker, dockerhub
$ docker run --privileged --name dind1 -d docker:1.8-dind
# mkdir -p /docker/jenkins # chmod 666 /docker/jenkins
# docker run -itd --name jenkins -p 8080:8080 -p 50000:50000 -v /docker/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -e TZ=Asia/Seoul -u rootjenkins/jenkins:latest
-v /docker/jenkins:/var/jenkins_home
local volume의 /docker/jenkins 디렉토리와 container volume의 /var/jenkins_home 디렉토리 매핑
-v /var/run/docker.sock:/var/run/docker.sock
제일 중요한 옵션
docker in docker를 구현하기 위해 사용하는 옵션
-u root
Docker 사용자를 root로 설정
-p 8080:8080 -p 50000:50000
local port와 container port 연결
8080은 Jenkins 기본 port
50000dms Jenkins slave port
-e TZ=Asia/Seoul
jenkins 내의 timezone 설정
[root@jenkins devops-pipeline]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d8cbbb69e267 jenkins/jenkins:latest "/sbin/tini -- /usr/…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins
0.0.0.0/0은 모든 IP 대역에 대한 허용입니다. 현재는 기능테스트를 위해서 모든 대역으로 잡아놨지만 후에 특정 인스턴스의 IP로만 허용 할 예정입니다
이제 브라우저로 젠킨스에 접속 해봅시다
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

gitlab을 사용해보겠습니다.

$ docker exec -it jenkins bash
$ curl -fsSL get.docker.com -o get-docker.sh
$ sh get-docker.sh
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 094c32442200 nasa1415/devops:0.1 "/sbin/tini -- /usr/?? About an hour ago Up About an hour 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins
FROM ubuntu:18.04 RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime RUN apt upgrade -y RUN apt-get update -y RUN apt-get install nginx -y RUN echo "daemon off;" >> /etc/nginx/nginx.conf CMD ["nginx"]


root@nasa1515:/gitlab/devops-pipeline# ls -alrt 합계 24 drwxr-xr-x 3 student student 4096 9월 22 15:55 .. -rw-r--r-- 1 root root 45 9월 22 16:00 README.md -rwxrwxrwx 1 root root 208 9월 24 17:56 Dockerfile -rwxrwxrwx 1 root root 355 9월 24 18:10 Jenkinsfile-nasa drwxr-xr-x 8 root root 4096 9월 24 18:11 .git drwxr-xr-x 3 root root 4096 9월 25 11:50 .
node {
stage('Clone repository') {
checkout scm
}
stage('Build image') {
app = docker.build("nasa1415/devops")
}
stage('Push image') {
docker.withRegistry('https://registry.hub.docker.com', 'nasa1415') {
app.push("${env.BUILD_NUMBER}")
app.push("latest")
}
}
}