지금까지 빌드 결과물 war 파일을 톰캣 서버에 복사해서 기동시켰다.
이제는 톰캣이 아니라 다른 서버에도 war 파일을 복사시키고 기동시켜보겠다.
그러기 위해서 필요한 것이 [도커 컨테이너 형태로 실행할 수 있게 도와주는 SSH 서버]인 것이다.
1. 플러그인 설치
젠킨스 관리 > Plugins > Publish Over SSH 설치를 한다.
2. 도커 허브에서 이미지 다운
https://hub.docker.com/r/edowon0623/docker
docker pull edowon0623/docker-server:m1
나는 수업에서 제공하는 mac m1용 이미지 파일을 다운받았다.
cmd 창에 위 명령어를 입력해주면 다운받을 수 있다.
3. 도커 이미지 기동
docker ps
docker stop [컨테이너 이름] -> 사용중인 이미지만 멈추기
docker rm [컨테이너 이름] -> 사용중인 컨테이너까지 삭제
기존에 기동되어 있는 이미지가 있다면 중지하고 다운받은 이미지를 기동시킨다.
docker run --privileged --name manager -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker-server:m1 /usr/sbin/init
도커 이미지를 위 명령어로 실행한다.
- --privileged : 컨테이너 내부에서 root 권한 획득
- --name : 컨테이너 이름 지정
- -p : 포트 포워딩 / 컨테이너 내부의 SSH 서버는 22번 포트 / 로컬 환경에서는 10022라는 포트를 통해서 접속 시도
4. SSH 서버 작동
ssh root@localhost -p 10022
나가고 싶다면 exit 명령어를 사용하면 된다.
5. docker 실행
systemctl start docker
SSH 서버에서 도커를 실행한다.
만약 작동이 안된다면 설정을 변경해야한다.
vi /etc/sysconfig/docker
위 파일을 에디터로 실행시킨다.
# /etc/sysconfig/docker
#Modify these options if you want to change the way the docker daemon runs
OPTIONS='--selinux-enabled=false --log-driver=journald --signature-verification=false'
if [ -z "${DOCKER_CERT_PATH}" ]: then
DOCKER_CERT_PATH=/etc/docker
fi
# Do not add registries in this file anymore. Use /etc/containers/registries.conf
# instead. For more infomation reference the registries.conf(5) man page.
# Location used for temporary files. such as those created by
# dodcker load and build operations. Default is /var/lib/docker/tmp
# Can be overriden by setting the following environment variable.
# DOCKER_TMPDIR=/var/tmp
# Controls the /etc/cron.daily/docker-logrotate cron job status.
# To disable. uncomment the line below.
# LOGROTATE=false
# docker-latest daemon can be used by starting the docker-latest unitfile.
# To use docker-latest client. uncomment below lines
#DOCKERBINARY=/usr/bin/docker-latest
4번째 줄 enabled 뒤에 =false를 추가하면 된다.
참고로 나는 해당 파일이 아예 존재하지 않아서 직접 위처럼 써주었다.
6. 추가 라이브러리 설치
yum install -y iptables net-tools
sed -i -e 's/overlay2/vfs/g' /etc/sysconfig/docker-storage
나는 docker-storage 파일이 없다고 하여 생략하였다.
제대로 도커가 실행된다면 설치하지 않아도 상관없다.
7. 도커 상태 확인
docker status
inactive면 작동되지 않은 상태이다.
systemctl start docker
이 모습이 도커 동작 상태이다.
여기까지 SSH 서버로 사용할 수 있는 도커 컨테이너를 하나 준비한 것이다.
SSH 서버가 가상의 운영 서버라 생각하고 SSH 명령어를 이용해서, 젠킨스에서 만들어진 결과 파일(war)을 전달하는 과정을 테스트해볼 수 있다.
'INFRA > CICD' 카테고리의 다른 글
[젠킨스 설정] 다른 서버에 war 파일 복사 후 기동 (0) | 2024.06.24 |
---|---|
젠킨스 SSH Server 설정 (0) | 2024.06.23 |
젠킨스 자동 빌드 환경 구성하기 [Poll SCM] (3) | 2024.06.19 |
톰캣 서버에 프로젝트 배포 (0) | 2024.06.19 |
톰캣 [port 변경 / ip 제한 해제 / 유저추가] (0) | 2024.06.18 |