일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ubuntu
- tool
- laravel
- jenkins
- db
- Gradle
- IntelliJ
- jsp
- Spring Boot
- Design Patterns
- Git
- Spring
- 요리
- linux
- redis
- Spring Batch
- java
- JVM
- MySQL
- elasticsearch
- AWS
- javascript
- ReactJS
- Web Server
- springboot
- devops
- php
- 맛집
- Oracle
- it
- Today
- Total
아무거나
Jenkins + Docker 빌드/배포 or 개발환경 구축 본문
젠킨스 서버 구축
- https://bkjeon1614.tistory.com/95 // 젠킨스 설치
- Extended Choice Parameter Plug-In 플러그인 설치
ex ) * Extended Choice Parameter
Name : branch
Basic Parameter Types 체크
Parameter Type : Radio Buttons
Number of Visible Item : 3
Delimiter : ,
* Choose Source for Value
Value : dev,dev_2.5,dev_2.6
- 시스템 설정(workspace에 프로젝트별로 따로 모을경우)
* 젠킨스 -> 환경설정 -> 홈 디렉터리(고급) -> 작업공간 최상위 디렉토리 -> ${JENKINS_HOME}/workspace/${ITEM_FULLNAME} 입력
도커 개발환경 구축( os초기부터 세팅 )
1. https://bkjeon1614.tistory.com/287?category=708813 // 도커 설치
2. sudo docker pull ubuntu:14.04 // ubuntu14.04 도커 이미지를 받아온다.
3. 웹 서버 환경 구축을 위하여 우선 하나의 컨테이너에 필요한 모듈 설치
- docker run <옵션1> <옵션2> <...> <이미지이름,ID> <명령> <매개변수>
- sudo docker run -i -t -d -p 5001:80 --name web1 ubuntu:latest /bin/bash // 5001 ~ 5003 포트를 나눌예정
- 각 옵션들의 설명
-i (interactive): attach 상태가 아니더라도 bash에 명령어 전달 가능.
-t (tty): tty 모드 허용. bash 사용하려면 해주어야함.
-d (demon 맞나..) : 데몬모드. 컨테이너가 백그라운드로 실행되게 함.
( *찾아보니 detach 모드이고 데몬모드라고 부르기도 한다 함.)
-p (publish) : 호스트 포트랑 컨테이너 포트랑 연결
--name 컨테이너 이름
* 정확한 옵션이 궁금하면 http://pyrasis.com/book/DockerForTheReallyImpatient/Chapter20/28 참고
- sudo docker attach {컨테이너ID or 이름} 으로 접속하여 필요한 모듈을 설치한다.
4. scp를 이용한 배포 구성
- sudo docker exec -it web1 su - // 배포될 컨테이너로 접속한다.
- ubuntu 계정 생성
- public key 방식으로 배포할경우 원하는 경로에 키파일을 저장한다.
- chown ubuntu:ubuntu key.pem // 권한 확인 root소유자로 되있을 경우에 바꿔준다
ex) 예제 코드
#!/bin/bash
echo "*** branch : $1 ***"; // $i 파라미터로 받아옴 (docker 밖에서 명령을 줄때 받을 파라미터)
rm -R /var/www/html/dev_1_1 // 명확한 scp 실행을 위하여 기존 소스폴더 삭제
scp -r -i /var/www/html/key.pem ubuntu@13.124.4.251:/usr/share/tomcat8/.jenkins/workspace/web_$1/ /var/www/html // scp -r -i {key파일경로} {젠킨스서버계정/젠킨스서버ip:프로젝트소스경로} {배포할경로}
mv /var/www/html/web_$1 /var/www/html/dev // 저장된 프로젝트 이름을 웹루트 폴더 네임으로 변경(기존 프로젝트 네임과 싱크를 맞춘다)
echo "***************************************";
echo "docker server deploy success!!";
echo "***************************************";
- sudo docker exec {배포할컨테이너이름} sh {배포를실행할sh파일경로} {파라미터로 줄 branch이름} // 실행하여 마무리(초기 public key에 대한 승인이 필요하므로 실행시 yes입력)
ex ) sudo docker exec web1 sh /var/www/html/deploy.sh dev
5. 필요한 모듈을 설치 후 해당 내용을 저장된 컨테이너 하나로 여러 서버를 복제할 예정이므로 커밋을 한다.
- exit; // 컨테이너 접속해 있으면 나간다.
- sudo docker commit {컨테이너ID or 이름} {생성할 이미지 이름}
ex) sudo docker commit web1 web1_image_2017_03_20
6. sudo docker run -i -t -d -p 5000:80 --name {컨테이너ID or 이름} {이미지 이름}:{이미지 태그} /bin/bash -c '/usr/sbin/apache2ctl -D FOREGROUND'
- ex) sudo docker run -i -t -d -p 5000:80 --name web1 web1_image_2017_03_20:latest /bin/bash -c '/usr/sbin/apache2ctl -D FOREGROUND'
sudo docker run -i -t -d -p 5001:80 --name web2 web1_image_2017_03_20:latest /bin/bash -c '/usr/sbin/apache2ctl -D FOREGROUND'
.... // 5000포트와 5001포트로 생성
7. jenkins에 deploy관련 item을 만들어 execute shell란에 아래내용 작성 { 만들기 전에 jenkins build item 필요 }
#!/bin/bash
if [ -z $branch -o -z $server ]; // $branch랑 $server은 jenkins에서 플러그인활용하여 라디오버튼 선택시 받아오는 파라미터
then
echo "deploy failed"
exit
fi
sudo ssh -i /usr/share/tomcat8/.jenkins/pem/key.pem ubuntu@13.124.71.176 sudo docker exec test_api_$server sh /var/www/html/test_deploy.sh ${branch}
// sudo ssh -i {key파일경로} {원격명령을내릴유저명@원격명령을내릴서버ip} {명령}
echo "***** select branch *****"
echo $branch
echo "***** select server *****"
echo $server
echo "deploy success !!!!"
추가내용 : 방화벽 설정 문제가 빈번하므로 반드시 먼저 확인후 구축해야 한다.
'Infra > DevOps' 카테고리의 다른 글
[sentry] Sentry에 java 연동 (클라우드 기준) (2) | 2020.04.16 |
---|---|
[springboot] gradle 개발환경별 버저닝 빌드&배포 (0) | 2019.08.21 |
Docker를 이용한 CI 구축 연습하기 (젠킨스, 슬랙) (0) | 2019.06.10 |
vagrant로 virtualbox 생성시 password쪽 부터 로드안되는 문제 (0) | 2019.03.26 |
[vagrant] 로컬 개발환경구축 vagrant세팅 (0) | 2019.03.25 |