hyelie
hyelie
Hyeil Jeong
       
글쓰기    관리    수식입력
  • 전체보기 (495)
    • PS (283)
      • Algorithm (28)
      • PS Log (244)
      • Contest (6)
      • Tips (5)
    • Development (52)
      • Java (14)
      • Spring (23)
      • SQL (2)
      • Node.js (2)
      • Socket.io (3)
      • Study (4)
      • Utils (4)
    • DevOps (36)
      • Git (5)
      • Docker (4)
      • Kubernetes (2)
      • GCP (3)
      • Environment Set Up (8)
      • Tutorial (12)
      • Figma (2)
    • CS (74)
      • OOP (7)
      • OS (24)
      • DB (2)
      • Network (24)
      • Architecture (0)
      • Security (2)
      • Software Design (0)
      • Parallel Computing (15)
    • Project (15)
      • Project N2T (5)
      • Project ASG (0)
      • Project Meerkat (1)
      • Model Checking (7)
      • Ideas (2)
    • 내가 하고싶은 것! (34)
      • Plan (16)
      • Software Maestro (10)
      • 취준 (8)
hELLO · Designed By 정상우.
hyelie

hyelie

EC2   Docker   Jenkins   Spring   Gitlab 자동 빌드 - 4. docker image push
DevOps/Tutorial

EC2 Docker Jenkins Spring Gitlab 자동 빌드 - 4. docker image push

지난 포스팅에서 gitlab에 push하면 hook을 따와서 jenkins에서 gitlab의 소스코드를 받아와서 build하는 것을 했다. 그러면 다음으로는 docker image를 만드는 것이다.

지금 EC2 위에는 docker가 있고, docker 내부에 jenkins를 올려두었고, jenkins에서 docker image를 작성하려면 1) jenkins 내에 docker를 깔던가, 2) jenkins에서 docker로 접속할 수 있는 방법을 만들던가 2가지 방법이 있다. 나는 2)를 택하고자 한다.(jenkins bash에서 docker로 접속할 수 있게)

 

https://skyblue300a.tistory.com/14

 

1. Jenkins에서 docker로 접속하기

$ docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED       STATUS          PORTS                               NAMES
25fde056e42c   jenkins/jenkins:lts   "/sbin/tini -- /usr/…"   8 hours ago   Up 17 minutes   50000/tcp, 0.0.0.0:8081->8080/tcp   jenkins-compose

docker ps를 입력해서 jenkins container ID를 받아온다.

 

$ docker exec -it 25fde056e42c bash
root@25fde056e42c:/#

exec -it bash 명령어를 이용해 jenkins container bash로 들어간다.

 

root@25fde056e42c:/# ssh-keygen -t rsa

jenkins에서 keygen을 하고, ec2에서 이 key를 인증하게 할 것이다. 위처럼 jenkins container bash 내에서 ssh-keygen을 하면, /compose/.ssh 폴더 내에 id_rsa, id_rsa.pub가 생성된다. (지금은 jenkins container와 binding mount를 했기 때문)

 

root@25fde056e42c:/# cat /root/.ssh/id_rsa.pub 
exit

이 값을 복사하고 exit를 이용해 ec2로 돌아가자.

 

$ vim ~/.ssh/authorized_keys

~/.ssh/authorized_keys에 방금 복사한 id_rsa.pub 값을 붙여넣는다. 의미하는 것은, jenkins container에서 ec2로의 접속을 허가한다는 이야기이다.

 

$ docker exec -it 25fde056e42c bash
root@25fde056e42c:/# ssh ec2@$(/sbin/ip route | awk '/default/ { print $3 }')

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
16 package(s) needed for security, out of 18 available
Run "sudo yum update" to apply a
$

ssh를 이용하면, jenkins bash에서 ec2로 접속할 수 있게 된다.

 

 

 


 

 

 

2. build 이후에 image 생성

jenkins - project - 구성 - build - execute shell

 

add build step - execute shell

이 shell에 방금 입력한 명령어를 통해 jenkins에서 ec2로 접속하고, docker image를 build하고 docker hub에 push하게 할 것이다. shell은 아래와 같다.

 

ssh -t -t ec2-user@$(/sbin/ip route | awk '/default/ { print $3 }') <<EOF
cd /home/ec2-user/compose/jenkins/workspace/test1
docker build -t {내 docker id}/composetest .
docker login -u {내 docker id} -p {내 docker pw}
docker push hyelie/composetest
exit
EOF


  
jenkins와 ec2가 binding mount되어 있기 때문에 이러한 것이 가능하다.

console log, build success, finished
docker&nbsp;hug&nbsp;-&nbsp;hyelie/composetest

와! docker hub에 내가 만든 image가 push되어 있는 것을 볼 수 있다.

그러면 아래의 flow가 완성된다.

(1) local에서 작업 - gitlab에 push
(2) gitlab에서 hook 발생 - jenkins에서 gitlab의 소스코드 clone 이후 build
(3) jenkins에서 image build, docker hub에 push

이후에는, main server에서는 docker hub의 image를 받아와서 container를 실행할 수 있을 것이다.

'DevOps > Tutorial' 카테고리의 다른 글

EC2 Docker Jenkins Spring Gitlab 자동 빌드 - 6. 수정사항, ECR push  (0) 2022.10.05
EC2 Docker Jenkins Spring Gitlab 자동 빌드 - 5. jenkins pipeline - JUnit + SonarQube  (0) 2022.10.05
EC2 Docker Jenkins Spring Gitlab 자동 빌드 - 3. gitlab project hooker 연동  (0) 2022.10.04
EC2 Docker Jenkins Spring Gitlab 자동 빌드 - 2. Docker, Jenkins, gitlab 연동  (0) 2022.10.04
EC2 Docker Jenkins Spring Gitlab 자동 빌드 - 1. EC2 instance 생성 및 VS Code SSH 접속  (0) 2022.10.04
    hyelie
    hyelie

    티스토리툴바