Docker로 MarkLogic 환경을 구축해 보았습니다.

소개



시험에서 Docker로 MarkLogic 환경을 빌드했으므로 그 단계를 설명합니다.

동작 확인 환경




OS
도커 버전
docker-compose version


Windows 10 Home
18.09.9
1.24.1


※Windows 10 Home은 Docker for Windows를 설치할 수 없기 때문에 Docker ToolBox를 설치하여 시도했습니다.

전제 조건



본 기사는 이하가 인스톨·등록되어 있는 것이 전제가 됩니다
  • Docker 설치
  • docker-compose 설치
  • MarkLogic 커뮤니티 등록(무료)

  • 여기 에서 등록할 수 있습니다


  • 디렉토리 구성



    디렉토리 구성은 다음과 같이 시도했습니다.
    .
    ├ docker ← Dockerファイルやrpmファイル等の格納ディレクトリ
    │    │ 
    │    └ marklogic ← Marklogic用のコンテナで必要なDockerファイルやrpmファイル等格納ディレクトリ
    │        │ 
    │        └ 10-0-2 ← Marklogic10.0.2の資材格納ディレクトリ
    │            │
    │            └ Dockerfile ← Dockerファイル
    │            │
    │            └ rpm ← rpmファイル格納ディレクトリ
    │            │   │
    │            │   └ MarkLogic-10.0-2.x86_64.rpm ← Marklogicのrpmファイル
    │            │
    │            └ conf ← 設定ファイル格納ディレクトリ
    │                │
    │                └ supervisord.conf ← supervisord用設定ファイル
    │
    ├ docker-compose.yml ← Composeファイル
    
    

    MarkLogic rpm 파일은 다음 사이트에서 가져옵니다. 다운로드하려면 MarkLogic 커뮤니티에 등록해야 합니다.

    Red Hat Enterprise Linux/CentOS, Version7의 rpm 파일을 다운로드하십시오.


    다양한 파일 설정



    Dockerfile 및 Compose 파일, supervisord.conf 파일을 수정합니다.

    Docker 파일



    Docker 파일은 다음과 같이 수정합니다.
    컨테이너를 시작할 때 서비스를 자동으로 시작하고 싶기 때문에 supervisord도 설치하고 있습니다.

    Dockerfile
    FROM centos:centos7
    
    RUN yum -y update && yum clean all
    
    RUN yum -y install glibc.i686 gdb.x86_64 redhat-lsb.x86_64 && yum clean all
    
    RUN yum -y install initscripts && yum clean all
    
    RUN yum install -y epel-release
    RUN yum install -y supervisor && yum clean all
    COPY ./conf/supervisord.conf /etc/
    
    ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/MarkLogic/mlcmd/bin
    
    COPY ./rpm/MarkLogic-10.0-2.x86_64.rpm /tmp/MarkLogic.rpm
    
    RUN yum -y install /tmp/MarkLogic.rpm && rm /tmp/MarkLogic.rpm
    
    EXPOSE 7997 7998 7999 8000 8001 8002
    
    ENTRYPOINT ["/usr/bin/supervisord"]
    

    Compose 파일



    Compose 파일은 다음과 같이 수정

    docker-compose.yml
    version: '3'
    
    services:
      ml10-node-1:
        build: ./docker/marklogic/10-0-2
        tty: true
        expose:
          - "7997"
          - "7998"
          - "7999"
        ports:
          - "8000:8000"
          - "8001:8001"
          - "8002:8002"
          - "8010:8010"
        hostname: "ml10-host-1.local"
        container_name: "ml0-node-1.local"
    

    supervisord.conf 파일



    컨테이너가 시작될 때 시작할 서비스를 설정합니다.
    이번에는 MarkLogic을 시작합니다.

    supervisord.conf
    [supervisord]
    nodaemon=true
    
    [program:MarkLogic]
    command=/sbin/service MarkLogic start
    
    

    컨테이너 생성 및 시작



    Compose 파일이 있는 디렉토리에서 다음 명령 실행
    실행 완료까지 조금 시간이 걸립니다.
    $ docker-compose up -d
    

    실행이 완료되면 다음에 액세스
    http://localhost:8001
    

    ※localhost 부분은 환경에 따라 다릅니다. 예를 들어 Docker Toolbox를 사용하는 경우 'docker-machine ip'를 실행하여 IP 주소를 확인하고 localhost 부분을 바꿉니다.

    안전하게 시작할 수있었습니다.


    클러스터 구성을 원한다면



    클러스터 구성으로 환경을 빌드하려면 Compose 파일을 수정하면됩니다.
    다음은 3대의 클러스터 구성으로 하고 싶은 경우

    docker-compse.yml
    version: '3'
    
    services:
      ml10-node-1:
        build: ./docker/marklogic/10-0-2
        tty: true
        expose:
          - "7997"
          - "7998"
          - "7999"
        ports:
          - "8000:8000"
          - "8001:8001"
          - "8002:8002"
          - "8010:8010"
        hostname: "ml10-host-1.local"
        container_name: "ml0-node-1.local"
    
      ml10-node-2:
        build: ./docker/marklogic/10-0-2
        tty: true
        expose:
          - "7997"
          - "7998"
          - "7999"
        ports:
          - "18000:8000"
          - "18001:8001"
          - "18002:8002"
          - "18010:8010"
        hostname: "ml10-host-2.local"
        container_name: "ml0-node-2.local"
    
      ml10-node-3:
        build: ./docker/marklogic/10-0-2
        tty: true
        expose:
          - "7997"
          - "7998"
          - "7999"
        ports:
          - "28000:8000"
          - "28001:8001"
          - "28002:8002"
          - "28010:8010"
        hostname: "ml10-host-3.local"
        container_name: "ml0-node-3.local"
    

    컨테이너 작성 및 기동을 해, 각각 설정해 클러스터 구성으로 하는 것에 성공
    클러스터 구성 절차는 여기에서 생략합니다.


    참고

    좋은 웹페이지 즐겨찾기