1. 이슈 사항
- 구성 검증, 기능 검증, 성능 검증을 위한 클라우드 기반 미들웨어 구성시, 아래와 같은 문제점이 있음
2. 개선 사항
- 위 문제점을 도커를 통해 개선하고 개선된 사항은 아래와 같음
3. 상세 작업-mariadb
- mariadb는 dockerfile 생성 없이 공식 이미지를 활용함
- mariadb 컨테이너 생성 효율성을 확보하기 위해 docker-compose.yml에 스크립트 작성
- dokcer-compose.yml 파일 내용
version: '3.1'
services:
mariadb:
container_name: whms-mariadb
image: mariadb:latest
ports:
- 3306:3306
volumes:
- /engn001/docker/mariadb/data:/var/lib/mysql
- /engn001/docker/mariadb/config:/etc/mysql/conf.d
environment:
MYSQL_DATABASE: sensing
MYSQL_ROOT_PASSWORD: *******
MYSQL_USER: sftth
MYSQL_PASSWORD: ******
TZ: Asia/Seoul
networks:
- test-bridge
restart: always
4. 상세 작업-redis
- redis 공식 이미지는 redis.conf를 참조하지 않아서 비밀번호 설정을 할 수 없음
- 보안을 위해 비밀번호 설정은 필요할 것 같아서 redis.conf를 참조하도록 dockerfile 을 생성 함.
- redis dockerfile 내용(현재는 단일 구성이지만 클러스터링으로 개선 예정)
FROM redis:latest ADD redis.conf /usr/local/bin/redis.conf RUN chmod 755 /usr/local/bin/redis.conf EXPOSE 6379 CMD ["redis-server", "/usr/local/bin/redis.conf"]
- dockerfile을 git에 커밋하고 dockerhub에서 자동 빌드하여 이미지를 생성하도록 함.
-
github 커밋(커밋 과정은 아는 것으로 여김)
- dockerhub 연결 및 자동 빌드(dockerhub의 존재는 아는 것으로 여김)
5. 상세 작업-tomcat
- tomcat 공식 이미지는 debian 기반이라서 centos7 기반, 업무환경에 맞는 디렉토리 구조를 반영한 tomcat 이미지를 만들기 위한 dockerfile을 생성함
- tomcat docerfile 내용(내용이 너무 길어져서 수정 예정)
ARG VERSION=7
FROM centos:${VERSION}
RUN yum install java-1.8.0-openjdk-devel.x86_64 -y
RUN ["/bin/bash","-c","mkdir -p /engn001/tomcat"]
ADD ./9.0.tar.gz /engn001/tomcat/
RUN ["/bin/bash","-c","mkdir -p /logs001/tomcat/9.0/ist_8180"]
RUN ["/bin/bash","-c","mkdir -p /sorc001/appadm/application"]
WORKDIR /sorc001/appadm/application
ADD ./mainWebApp.war .
CMD /engn001/tomcat/9.0/servers/ist_8180/start.sh -DFOREGROUND
6. 상세 작업-apache
- apache 도 필요에 맞게 구성하기 위한 dockerfile을 생성함
- apache dockerfile 내용
ARG VERSION=7
FROM centos:${VERSION}
RUN ["/bin/bash","-c","mkdir -p /engn001/apache"]
ADD ./2.4.tar.gz /engn001/apache
RUN ["/bin/bash","-c","mkdir -p /logs001/apache/2.4/servers/webd-ist_80"]
RUN ["/bin/bash","-c","mkdir -p /sorc001/appadm/application/htdocs"]
ADD index.html /sorc001/appadm/application/htdocs
CMD /engn001/apache/2.4/servers/webd-ist_80/start.sh
7. 구동
7.1 dockerfile 빌드
- 지금까지 생성한 dockerfile을 활용하려면 먼저 빌드가 필요함
- 빌드 방법은 스크립트를 활용하거나 dockerhub를 사용하는 방법 두 가지가 가능함.
- 스크립트 활용 방법: 아래 도커 명령어로 빌드하면 됨
```sh
cd /도커파일이 있는 경로
docker build -f dockerfile -t whms-redis:1.0 ./
```
- dockerhub 활용 방법: github에 dockerfile을 커밋하고 연동 설정한 dockerhub에서
알아서 빌드함
7.2 docker-compose 구동
- 빌드된 이미지를 활용하여 mariadb,redis,tomcat,apache를 구동함
- docker-compose.yml 내용
```dockerfile
version: '3.1'
services:
mariadb:
container_name: whms-mariadb
image: mariadb:latest
ports:
- 3306:3306
volumes:
- /engn001/docker/mariadb/data:/var/lib/mysql
- /engn001/docker/mariadb/config:/etc/mysql/conf.d
environment:
MYSQL_DATABASE: sensing
MYSQL_ROOT_PASSWORD: ****
MYSQL_USER: sftth
MYSQL_PASSWORD: *****
TZ: Asia/Seoul
networks:
- test-bridge
restart: always
redis-master:
container_name: whms-redis-master
image: sftth/whms-redis:1.0
# build:
# context: .
# dockerfile: Dockerfile
networks:
- test-bridge
ports:
- 6379:6379
environment:
- REQUIREPASS=passwd
- CLIENTHOST=127.0.0.1
- CLIENTPORT=6379
volumes:
- /engn001/docker/redis/redis1:/data
restart: always
whms-tomcat:
container_name: whms-tomcat
image: sftth/whms-tomcat:latest
ports:
- 8180:8180
networks:
- test-bridge
restart: always
whms-apache:
container_name: whms-apache
image: sftth/whms-apache:1.0
ports:
- 80:80
networks:
- test-bridge
restart: always
networks:
test-bridge:
driver: bridge
```
- 참고로 docker network 구성에 대한 이해가 필요한데 해당 내용은 아래 링크 참고
8. 검증
- docker-compose.yml을 이용하여 docker 생성 실습 동영상
- 접속 테스트: http://serverIP/web/login.do
댓글남기기