1. 이슈 사항

  • 구성 검증, 기능 검증, 성능 검증을 위한 클라우드 기반 미들웨어 구성시, 아래와 같은 문제점이 있음

prototype

2. 개선 사항

  • 위 문제점을 도커를 통해 개선하고 개선된 사항은 아래와 같음

prototype

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 커밋(커밋 과정은 아는 것으로 여김) whms-redis

  • dockerhub 연결 및 자동 빌드(dockerhub의 존재는 아는 것으로 여김) whms-redis

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 구성에 대한 이해가 필요한데 해당 내용은 아래 링크 참고

docker network 참고

8. 검증

  • docker-compose.yml을 이용하여 docker 생성 실습 동영상
  • 접속 테스트: http://serverIP/web/login.do

dockerfile

카테고리:

업데이트:

댓글남기기