티스토리 뷰

프로젝트에서 젠킨스를 도커 컨테이너로 돌려 Dockerfile로 컨테이너 실행 시 jar파일을 실행하게 만들고, 그 Dockerfile을 이미지로 빌드 후 dockerhub쪽에 push를 하게 만들었습니다. push 된 이미지를 다시 배포용 ec2 서버에 pull 받아 도커 컨테이너로 실행하게 만들었습니다.

        stage('Build and Push Image') {
            steps {
                script {
                    def imageName = 'haebang/haebang:jenkins'
                    
                    // Build Docker image
                    docker.build(imageName, '-f ./Dockerfile .')
                    
                    // Login to DockerHub
                    docker.withRegistry('https://registry.hub.docker.com', 'dockerhub-haebang') {
                        // Push Docker image to DockerHub
                        docker.image(imageName).push()
                    }
                }
            }
        }

Dockerfile로 push할 image의 이름과 태그를 imageName에 적습니다.

기존 프로젝트에 설정한 Dockerfile의 경로를 적고, Dockerfile을 사용해 이미지를 빌드합니다.

Jenkins의 credentials에  dockerhub을 위한 인증정보를 설정해 Dockerhub에 로그인합니다.

위에 설정한 imageName으로 docker image를 push합니다.

 

stage('Run Container') {
            environment {
                EC2_INSTANCE = 'ec2-user@********'
                SSH_KEY = credentials('ssh-key')
            }
            steps {
                script {
                    // EC2 인스턴스로 도커 컨테이너 실행
                    sh "ssh -o StrictHostKeyChecking=no -i $SSH_KEY $EC2_INSTANCE
                    'docker run -d --name haebang -p 8080:8080 haebang/haebang:jenkins'"
                }
            }
        }

배포용 ec2 서버에 접속하기 위해  ssh_key는 Jenkins의 credentials에 인증정보를 추가해 환경변수를 설정했습니다.

ssh 명령어를 사용해 ec2 인스턴스로 접속 후 접속된 인스턴스에서 도커 컨테이너를 실행하는 명령어로 

"Host key verification failed" 라는 오류를 해결하기 위해 -o StrictHostKeyChecking=no" 인 호스트 키 체크를 비활성화하는 옵션을 주었습니다.

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함