728x90
반응형
Docker는 컨테이너 기반 가상화를 제공하여 애플리케이션을 효율적으로 패키징하고 배포할 수 있는 강력한 도구입니다. 이번 포스트에서는 Docker를 사용하여 웹 애플리케이션을 배포하는 전체 과정을 살펴보겠습니다.
1. 도커 컨테이너 WAS에 .war파일 올리기
mkdir /javawebapp8102 // host linux에 /javawebapp8102 디렉토리 만들기
ls /javawebapp8102 -l // fileZilla로 .war 파일 복사 후 확인
docker container cp /javawebapp8102/ZJavaWeb.war tomcat8102:/usr/local/tomcat/webapps/
// war파일 deploy(copy) : host linux에서 컨테이너 WAS의 webapps로 카피
docker container exec -it tomcat8102 /bin/bash // 컨테이너 내부로 접속해서 확인
ls /usr/local/tomcat/webapps/ -l
http://공인IP:8102/ZJavaWeb/ 접속해서 페이지 정상 출력 확인
2. 도커 컨테이너 WAS의 파일을 host linux로 copy
rm /javawebapp8102/*.war // host linux의 파일 삭제
// 컨테이너의 war 파일을 host linux의 폴더로 copy
docker container cp tomcat8102:/usr/local/tomcat/webapps/ZJavaWeb.war /javawebapp8102/
// copy 결과 확인
ls /javawebapp8102 -l
3. host linux 디렉토리와 컨테이너 내부 /usr/local/tomcat/webapps/ 디렉토리 Bind Mount 해서 war 배포
mkdir /javawebapp8103 // host linux에 디렉토리 생성
ls /javawebapp8103 -l // fileZilla로 .war 파일 복사 후 확인
// tomcat8103 컨테이너 생성하고 백그라운드 실행, -v 호스트디렉토리:컨테이너디렉토리 동기화
docker container run --name tomcat8103 \
-p 8103:8080 -dit \
-v /javawebapp8103/:/usr/local/tomcat/webapps/ \
tomcat:9.0.74-jre8
ls /javawebapp8103 -l // 확인
docker container inspect tomcat8103 // Binds 정보 확인
docker container exec -it tomcat8103 /bin/bash // 컨테이너 내부 접속 후 확인
ls /usr/local/tomcat/webapps/ -l
http://공인IP:8103/ZJavaWeb/ 접속해서 페이지 정상 출력 확인
4. Volume Mount를 이용한 war 배포(docker가 관리)
docker volume create tomcat8104_volume // tomcat_volume 생성
docker volume ls
docker volume inspect tomcat8104_volume // Mountpoint로 경로 확인
ls /var/lib/docker/volumes/tomcat8104_volume/_data -l // 확인한 경로 확인
// tomcat8104 컨테이너 만들고 백그라운드 실행, volume mount를 이용하여 디렉토리 동기화
// -v 볼륨이름:컨테이너디렉토리
docker container run --name tomcat8104 \
-p 8104:8080 -dit \
-v tomcat8104_volume:/usr/local/tomcat/webapps \
tomcat:9.0.74-jre8
docker container inspect tomcat8104 // Binds 정보 확인
docker container cp \
/javawebapp8103/ZJavaWeb.war tomcat8104:/usr/local/tomcat/webapps/
// host linux에서 컨테이너 WAS의 webapps로 war deploy
http://공인IP:8104/ZJavaWeb/ 접속해서 페이지 정상 출력 확인
ls /var/lib/docker/volumes/tomcat8104_volume/_data -l
// 도커가 관리하는 volume mount 디렉토리 확인
docker container exec -it tomcat8104 /bin/bash // 컨테이너 내부로 접속해서 확인
ls /usr/local/tomcat/webapps/ -l
5. 컨테이너를 이미지로 만들기
docker container commit tomcat8103 tomcat8103_image
docker image ls
// tomcat8103_image를 이용해서 tomcat8201 컨테이너 만들기
docker container run --name tomcat8201 \
-p 8201:8080 -dit \
tomcat8103_image
// 결과 확인
docker container ls -a
docker container logs tomcat8201 // ZJavaWeb.war가 deploy 안된 것 확인
http://공인IP:8201/ZJavaWeb/ 404페이지 확인
// Binds, Images, Volumes 정보 확인
docker container inspect tomcat8201 | grep Binds
docker container inspect tomcat8201 | grep Image
docker container inspect tomcat8201 | grep Volumes
(docker container inspect tomcat8201 | grep -e Binds -e Image -e Volumes)
// tomcat8103 컨테이너는 볼륨 바인드 마운트를 사용하지만,
// 이것으로 이미지를 만들고 그 이미지로 컨테이너를 생성했을 때 볼륨 바운드 마운트는 적용되지 않음
6. war를 가지고 있는 컨테이너를 이미지로 만들기
docker container commit tomcat8102 tomcat8102_image
docker image ls
docker container run --name tomcat8202 \
-p 8202:8080 -dit \
tomcat8102_image
docker container ls -a
docker container logs tomcat8202 // war파일 deploy된 것 확인
http://공인IP:8202/ZJavaWeb/ 페이지 정상 출력 확인
7. Docker file (컨테이너 이미지 만드는 정보를 갖는 메타데이터) 이용해서 이미지 만들기
- 컨테이너 생성, war 카피 등의 명령어를 Docker file에 서술해서 war 파일을 가지고 있는 이미지 생성
// image_make01 디렉토리 생성후 war 파일 복사
mkdir image_make01
cp /javawebapp8103/ZJavaWeb.war /image_make01
ls /image_make01 -l
cd image_make01
// Docker file 만들기
vi Dockerfile
# Dockerfile 내용
# 베이스이미지, 상속할 이미지
FROM tomcat:9.0.74-jre8
#이미지에 파일, 폴더 추가 : ROOT.war 변경
#COPY ./ZJavaWeb.war /usr/local/tomcat/webapps/
#COPY ./ZJavaWeb.war /usr/local/tomcat/webapps/ROOT.war
COPY ./ZJavaWeb.war $CATALINA_HOME/webapps/ROOT.war
#WORKDIR /usr/local/tomcat
#EXPOSE 8080
//도커파일 이용해서 이미지 만들기
docker image build -t tomcat8203_image_dockerfile:0.0.1 .
docker image ls // 이미지 생성 확인
// tomcat8103_image_dockerfile 이미지로 컨테이너 만들기
docker container run --name tomcat8203 \
-p 8203:8080 -dit \
tomcat8203_image_dockerfile:0.0.1
docker container ls
http://공인IP:8203 페이지 정상 출력 확인
8. 컨테이너 이미지 hub.docker.com 레지스트리에 등록하기(push/pull)
hub.docker.com 회원가입 후 로그인
Create repository // 레파지토리 만들기
docker tag tomcat8204_image_dockerfile:0.0.1 tomcat8204:0.0.1 // hub에 등록할 이미지 만들기
docker image ls
docker login // id, pwd
docker push tomcat8204:0.0.1 // hub에 업로드
hub.docker.com에서 업로드 확인
// 이미지 pull
docker pull tomcat8204:0.0.1
// pull로 가져온 이미지로 컨테이너 만들기
docker container run --name tomcat8205 \
-p 8205:8080 -dit \
tomcat8204:0.0.1
docker container ls // 컨테이너 생성 확인
http://공인IP:8205 페이지 정상 출력 확인
728x90
반응형
'study_IT > DevOps' 카테고리의 다른 글
로컬 및 Jenkins에서 쉘 스크립트 작성, 실행하기 (0) | 2023.10.19 |
---|---|
젠킨스 환경설정: JDK와 Maven 설정 (1) | 2023.10.19 |
젠킨스 설치 및 설정하기: Docker Volume 활용 (1) | 2023.10.19 |
네이버 클라우드 플랫폼을 사용하여 Docker 이미지 호스팅 및 컨테이너 배포하기 (1) | 2023.10.19 |
네이버 클라우드 서버에 도커 설치하기 (0) | 2023.10.17 |