A. 시작
Docker - 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼.
Jenkins - 지속적인 통합(Continuous integration, CI) + 지속적 배포(continuous delivery, CD)환경 구축 도구.
.net Core - ASP.NET Core는 macOS, Linux 및 Windows에서 실행되는 ASP.NET 오픈 소스 버전.
docker 명령어 참고 url
[Docker] Docker 기본 명령어 정리 (tistory.com)
준비
1. 로컬 PC
github 설치
docker 설치
visual studio 2022 설치
2. Jenkins Server
Jenkins 설치
docker 설치
3. deploy Server
docker 설치
기본동작
개발자가 jenkins webhook에 연결되어있는 github branch에 push(Webhook 발생)
1. jenkins 서버에서 github 최신 소스를 pull 받아와 build 및 test를 진행
2. test 통과 후 image 제작
3. image -> docker 저장소인 docker hub에 push
4. 프로젝트에 포함되어있는 scripts/deploy.sh를 배포서버에 ssh 전송
5. deploy.sh 실행
- 실행 중인 컨테이너 중단 및 삭제 후 신규 이미지로 컨테이너 재실행
deploy.sh 동작 실행 중인 컨테이너 중단 및 삭제 기존 이미지 삭제 docker hub 이미지 pull 실행 사용하지 않는 불필요한 이미지 삭제 |
B. Docker 준비
Docker Desktop 설치
https://www.docker.com/products/docker-desktop/
WSL2 프로그램이 설치
[Docker] Windows 에서 Docker Desktop설치 시, WSL 2 installation is incomplete 에러 해결 (tistory.com)
.net Core 프로젝트 준비
1. visual studio 2022으로 원하는 프로젝트로 생성
Docker 사용 클릭
사용 클릭을 하지 않더라도 추가 > Docker 지원 및 수동으로 파일 생성 가능합니다.
scripts/deploy.sh 생성
생성 후 최종 배포하기 전 안에 있는 내용 수정해주시면 됩니다. (image명 및 container명)
# 가동중인 jenkinsexample 도커 중단 및 삭제 sudo docker ps -a -q --filter "name=jenkinsexample" | grep -q . && docker stop jenkinsexample && docker rm jenkinsexample | true # 기존 이미지 삭제 sudo docker rmi seongguk92/jenkinsexample # 도커허브 이미지 pull sudo docker pull seongguk92/jenkinsexample # 도커 run docker run -d -p 8080:80 --name jenkinsexample seongguk92/jenkinsexample # 사용하지 않는 불필요한 이미지 삭제 -> 현재 컨테이너가 물고 있는 이미지는 삭제되지 않습니다. docker rmi -f $(docker images -f "dangling=true" -q) || true |
C. docker 명령어 및 프로젝트 docker 동작 확인
여기서 만들어진 image 및 container는 docker desktop 또는
1. 생성된 프로젝트에 만들어진 docker.file 이용하여 image 제작
docker build -t {원하는 image명} {dockerfile 경로}
docker build -t image1 ./ |
2. 위에서 생성된 image를 이용하여 container 실행
docker run -d -p {원하는 port}:{docker port} --name {원하는 cotainer명} {사용할 image명}
docker run -d -p 8081:80 --name container1 image1 |
3. 만들어진 container 동작 확인
D. github 접근 token 생성
팀별 접근할 수 있는 token 생성
E. docker hub 접근 token 생성
회원가입 후 docker hub로 접근할 수 있는 token 생성
F. github webhook 생성
프로젝트 github 레포지토리 생성 및 푸시 후 settings > Webhooks
G. Jenkins 세팅
1. jenkins 접속 공인ip:포트 후 로그인
2 Manage Credentials 추가
Jenkins 관리 > Credentials > global 클릭 후 생성
팀별 접근할 수 있는 token 세팅
docker hub 접근 token
3. Jenkins 프로젝트 생성
Freestyle project 새로운 아이템 생성
echo $PASSWORD | docker login -u $USERNAME --password-stdin docker build -t dev/testapi ./ docker push dev/testapi docker rmi dev/testapi |
echo $PASSWORD | docker login -u $USERNAME --password-stdin sh deploy.sh |
'서버 (Linux, Windows, AWS) > 자동배포(CI, CD)' 카테고리의 다른 글
[CI/CD] GitHub Action + AWS CodeDeploy를 이용한 CI/CD (0) | 2023.02.15 |
---|---|
[툴] 자동화 CI/CD 툴 비교 (0) | 2023.02.06 |