-
django 웹서버 Jenkins으로 간단한 CI/CD 구축하기메모 및 기타 2021. 5. 9. 02:27
연습을 위해 다음과 같은 구성으로 구축했다.
요약하자면
깃허브로 push할 때마다 깃허브와 연동되어 있던 docker hub에서는 Dockerfile을 통해 빌드가 일어난다.
빌드되면 docker hub의 webhook을 이용해 jenkins로 하여금 docker container 형태로 django sever를 EC2에 배포한다.
1. Docker file 만들기
다음과 같은 형태로 Dockerfile과 django webserver가 있는 project파일을 구성한다.
< Dockerfile >
FROM sjoh0704/django:latest RUN pip3 install django WORKDIR /usr/src/app COPY . . WORKDIR ./project CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"] EXPOSE 8000
파일을 구성한 후, 나의 깃허브 레포지토리로 push한다.
2. docker hub와 github 연동하기
docker hub와 github를 연동하면 git hub에서 push했을 때 docker hub에서 자동으로 이미지가 빌드된다.
3. jenkins로 자동배포하기
jenkins 설치하기
jenkins를 이용하기전에 먼저 EC2 인스턴스에서 도커 데몬에대한 권한을 허용해줘야 한다.
sudo chmod 777 /var/run/docker.sock
jenkins build script는 다음과 같이 작성한다.
docker rm -f test || true 는 test 컨테이너가 존재한다면 지우고,
존재하지 않는다면 에러메시지를 출력하지 않는다.
이후 sjoh0704/shoppingweb:latest를 docker hub에서 pull한 후,
EC2 80번 포트와 container 8000번 포트를 연결한다.
성공적으로 배포 되었다면 EC2의 80번 포트로 접속했을 때 다음과 같이 django server가 나온다.
4. docker hub에 webhook 추가하기
마지막으로 자동 배포까지 파이프라인을 연결하기 위해 dockerhub와 jenkins을 연결해주어야 한다.
이를 위해서 먼저 jenkins 플러그인에서 cloudBees Docker Hub/Registry Notification 플러그인을 설치한다.
설치가 끝나면 빌드 유발에서 Monitor Docker Hub/Registry for image changes 항목이 추가되고,
webhook을 받을 docker hub repository를 설정해준다.
jenkins에서의 설정이 끝나면 dockerhub으로 돌아와 webhook을 추가해
Jenkins server로 post message를 날릴 수 있게 설정한다.
webhook URL은 http://[ec2 인스턴스 ip]:8080/job/webserver-test/dockerhub-webhook/notify 으로 설정
자세한 내용은 여기를 참고한다.
< Testing >
마지막으로 구축한 CI/CD가 잘 동작하는지 확인하기 위해
깃허브에 push해주었고 도커 허브에서 빌드가 잘 진행된다.
build가 성공적으로 끝났다면 docker hub에서는 설정해둔 webhook을 통해 jenkins에게 EC2를 배포시킨다.
Jenkins console log 확인결과 잘 배포되었음을 알 수 있다.
반응형'메모 및 기타' 카테고리의 다른 글
Docker로 mysql container 생성하고 DBeaver로 접속하기 (0) 2021.06.13 Dockerfile로 React 개발 환경 구축하기 (0) 2021.05.25 Docker 이미지 생성 및 배포하기 (0) 2021.04.06 OpenStack CLI로 인스턴스 생성하기 (0) 2021.04.03 Docker container환경에서 VScode로 django 사용하기 (0) 2021.03.14