티스토리 뷰
CI CD
Jenkins Pipeline을 이용한 Dockerfile image build, DockerHub push&pull
lemonade99 2023. 7. 6. 23:53프로젝트에서 젠킨스를 도커 컨테이너로 돌려 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" 인 호스트 키 체크를 비활성화하는 옵션을 주었습니다.
'CI CD' 카테고리의 다른 글
| sed 명령어를 이용해 jenkins에서 secret 값 설정하기 (0) | 2023.08.02 |
|---|---|
| Docker에서 Redis의 저장된 데이터가 없어지는 문제 (0) | 2023.07.26 |