728x90
반응형
Web Application On Docker
What is Web Application?
WAS에 배포되는 어플리케이션
웹 서비스라고도 한다.
도커 환경의 데이터베이스 구성
#MySQL docker-compose yaml파일을 생성
[root@]$ vi mysql-docker-compose.yml
version: '3.8'
services:
mysql:
image: mysql:8.0 # MySQL 버전 설정 (8.0 버전 사용)
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: root # MySQL root 계정의 비밀번호
ports:
- "43306:3306" # 로컬 머신의 43306 포트를 컨테이너의 3306 포트와 연결
volumes:
- ${HOME}/docker/volume/mysql:/var/lib/mysql # 데이터 영속성을 위해 로컬 볼륨을 MySQL 데이터 디렉토리에 마운트
networks: # 다른 컨테이너와의 통신을 위해 사용되는 네트워크 브릿지
- mysql_network
networks:
mysql_network:
driver: bridge
#docker-compose를 사용해 MySQL컨테이너 생성
[root@]$ docker-compose -f mysql-docker-compose.yml up -d
#컨테이너 생성여부 확인
[root@]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7ad17baf741 mysql:8.0 "docker-entrypoint.s…" 13 days ago Up 3 hours 33060/tcp, 0.0.0.0:43306->3306/tcp mysql
Dockerfile 작성
Dockerfile은 Docker 이미지를 자동으로 빌드하기 위한 설정 파일이다.
Dockerfile로 환경을 자동화하고 일관된 배포 환경을 만들 수 있다.
#Dockerfile 작성
[root@]$ vi Dockerfile
# JDK 8 버전을 사용한 Tomcat 이미지를 기반으로 설정
FROM tomcat:9-jdk8-openjdk
# 설정 파일을 Tomcat의 conf 폴더에 복사
COPY conf/catalina.properties /usr/local/tomcat/conf/catalina.properties
COPY conf/server.xml /usr/local/tomcat/conf/server.xml
COPY conf/context.xml /usr/local/tomcat/conf/context.xml
COPY bin/setenv.sh /usr/local/tomcat/bin/setenv.sh
# 환경변수 설정
ENV TOMCAT_DIR=/usr/local/tomcat
# Tomcat이 사용할 포트를 10080으로 설정
EXPOSE 10080
# Tomcat을 시작하는 명령어
# start: 백그라운드 프로세스 실행/setenv.sh을 실행함
# run: 포그라운드 프로세스 실행/setenv.sh을 실행하지 않음
CMD ["bash", "-c", "catalina.sh start && tail -f /dev/null"]
#도커 이미지 빌드
[root@]$ docker build -t demo .
#도커 빌드 이미지 확인
[root@]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
demo latest 7a2e328dee14 12 days ago 841MB
#컨테이너 실행
[root@]$
docker run -d -p 10080:10080 \
-v /home/imfra/docker/demo:/usr/local/tomcat/webapps/demo \
-v /home/imfra/logs:/app/logs \
-v /etc/localtime:/etc/localtime:ro \
-e TZ=Asia/Seoul \
-e LC_ALL=C.UTF-8 \
--network mysql_mysql_network \
--name demo demo
#컨테이너 실행 옵션
[root@]$
docker run -d -p 10080:10080 \
-v /home/imfra/docker/demo:/usr/local/tomcat/webapps/demo \
-v /home/imfra/logs:/app/logs \
-v /etc/localtime:/etc/localtime:ro \
-e TZ=Asia/Seoul \
-e LC_ALL=C.UTF-8 \
--network mysql_mysql_network \
--name demo demo
-d (detached mode)
백그라운드 실행 옵션
컨테이너가 백그라운드에서 실행되며, 명령어 실행이 끝난 후에도 터미널을 사용할 수 있다.
-p 호스트포트:컨테이너포트 (포트 매핑)
호스트와 컨테이너 간의 포트 매핑하는 옵션
10080:10080은 localhost:10080로 접근하면 컨테이너의 10080 포트로 트래픽이 전달된다.
-v /home/imfra/docker/demo:/usr/local/tomcat/webapps/demo (볼륨 마운트)
호스트 디렉터리와 컨테이너 디렉터리를 연결하는 옵션
/home/imfra/docker/demo: 호스트 시스템의 디렉토리
/usr/local/tomcat/webapps/demo: 컨테이너 내의 디렉토리
웹 애플리케이션을 Tomcat에 배포할 때 사용된다.
-v /etc/localtime:/etc/localtime:ro (시스템 시간 동기화)
-e TZ=Asia/Seoul (컨테이너의 시간대를 서울(Asia/Seoul) 로 설정)
-e LC_ALL=C.UTF-8 (UTF-8 문자 인코딩)
--network mysql_mysql_network (네트워크 설정)
컨테이너가 사용할 Docker 네트워크를 지정하는 옵션
해당 네트워크에 속한 다른 컨테이너들과 네트워크 통신이 가능해진다.
--name demo (컨테이너 이름 지정)
컨테이너의 이름을 지정하는 옵션
#프로세스 확인
[root@]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
772944c7d0ad demo "bash -c 'catalina.s…" 8 days ago Up 3 hours 0.0.0.0:10080->10080/tcp demo
728x90
반응형
'오픈소스' 카테고리의 다른 글
[Logback/k6] Rolling File Appenders 샘플 및 k6 테스트 (0) | 2024.12.06 |
---|---|
[카프카/스프링부트]Kafka On Docker(WLS2/Window) + SpringBoot 샘플코드 (3) | 2024.11.26 |
[오픈소스] Istio (1) | 2024.10.09 |
[OpenAPI] SVNKit 샘플코드 및 사용후기 (0) | 2023.05.10 |
[OpenAPI] KOMORAN 형태소 분석기 샘플코드 및 사용 후기 (0) | 2023.03.19 |
댓글