1. Summary
다른 서버에 war 파일을 복사하고 기동시켜보기 위해 다음과 같은 작업을 했다.
1) 다른 서버 구축
https://tksgk2598.tistory.com/493
centOS라고 하는 리눅스를 가지고 있는 컨테이너를 기동시켰다.
이 안에는 SSH와 도커가 들어가 있는 상태이다.
2) 젠킨스 SSH Server 설정
https://tksgk2598.tistory.com/494
1)에서 만들어진 서버를 SSH Server에 설정했다.
1)에서 만들어진 서버는 10022번 포트를 통해 로컬 컴퓨터에서 접근할 수 있게 했다.
젠킨스에서 설정을 통해 우리 로컬 서버에서 10022번 포트로 접근했을 때 어떠한 행위를 할 수 있도록 listening하게 했다.
2. Send build artifacts over SSH
그동안 만들었던 새로운 서버에 war 파일을 복사하고 기동시키도록 하겠다.
특정 컨테이너 > 구성 > 빌드 후 조치 부분으로 이동하면, '빌드 후 조치 추가'가 있다.
해당 메뉴들 중에서 [Send build artifacts over SSH]를 만든다.
다음과 같이 SSH Server를 작성해준다.
어떤 파일을 SSH Server에 보낼 것인지 작성한다. 이 때 SSH Server는 젠킨스 관리 > 서버 부분에서 설정한 것이다.
1) Source files
지금까지 빌드했던 이력을 보면, war 파일은 target 폴더에 있는 것을 확인할 수 있다.
우리는 이 target/*.war 파일을 전달할 것이다.
2) Remove prefix
target 폴더명을 지우고 war파일만 보낼 것이다.
3) Remote Directory
현재 내가 젠킨스에 생성한 프로젝트는 My-Docker-Project이고,
target 파일은 바로 이 프로젝트에 있으므로
현재 폴더에서 작업을 진행한다는 의미로 [.]을 써주는 것이다.
4) Exec command
docker build --tag=cicd-project -f Dockerfile .;
docker run -d -p 8080:8080 --name mytomcat cicd-project:latest
war 파일을 전송 후 복사(빌드)하고, 실행해준다는 의미의 명령어이다.
커맨드로 수동 build를 해보면 다음과 같이 진행된다. (cicd-project가 아닌 docker-server로 빌드)
그 후 run으로 기동시키면 다음과 같이 배포가 완료된다.
3. Dockerfile?
이게 도커파일 내용이다.
이미지 파일을 이렇게 만들겠다는 의미가 담겨있다.
톰캣은 9버전대이고, hello-world.war파일을 도커 컨테이너 /usr/local/tomcat/webapps에 복사하겠다는 의미이다.
4. why 8081로 접속했는데 연결이 되었을까?
나의 로컬 pc docker에서 docker ps로 기동 상태를 살펴보면,
docker-server:m1 컨테이너에서 8081 포트로 요청이 들어오면,
docker-server:m1 컨테이너 내부는 8080으로 연결해주겠다고 이미 설정했기 때문이다.
'INFRA > CICD' 카테고리의 다른 글
Ansible Playbook 명령어 [파일복사 / 프로그램 다운] (0) | 2024.07.04 |
---|---|
Docker 컨테이너로 Ansible 실행 (0) | 2024.06.30 |
젠킨스 SSH Server 설정 (0) | 2024.06.23 |
SSH 서버에서 사용할 수 있는 도커 컨테이너 만들기 (0) | 2024.06.23 |
젠킨스 자동 빌드 환경 구성하기 [Poll SCM] (3) | 2024.06.19 |