Docker file에서 Crowi 구축 및 Docker Compose에서 Crowi 실행

11695 단어 CrowiDocker

컨텐트


docker-node로 Crowi 이전 노트 이동하기
지난번에 노드 컨테이너를 가동한 후 컨테이너에서 작업을 하여crowi를 이동할 수 있습니다.
이번에는 Docker file로 정리해 Docker file로 이미지를 구축한다.
또한 Docker Compose에서는 node(crowi), mongodb, redis, +를 추가하여 각 용기에서elasticsearch를 시작합니다.

사이트 축소판 그림


https://hub.docker.com/r/bakudankun/crowi/
Docker file과 Docker Compose를 통한 접근 방식 등은 매우 유용합니다.고맙습니다.
(참고로 g++,make,python이 없어도build는crowi의 v1.4.0 때문인가요?)

미리 준비하다


다음 구성으로 3개의 파일을 준비합니다.
파일 구성
$ tree crowi
crowi
├── Dockerfile
├── docker-compose.yml
└── docker-entrypoint.sh
Dockerfile
FROM node:4.5-slim
MAINTAINER nooby

ENV DOCKERFILE_VERSION v1.0
ENV CROWI_VERSION v1.5.0

# 以下の3ステップ構成でビルド
# 一つのRUNコマンドで実行してるのは生成されるイメージを小さくするため
#
# 1. ビルドに必要なバイナリのインストール
# RUN apt-get update && apt-get install -y \
#     git \
#     g++ \
#     make \
#     python \
# 
# 2. crowiのクローンとビルド
# && git clone -b $CROWI_VERSION https://github.com/crowi/crowi.git \
# && cd /crowi \
# && npm install --unsafe-perm \
# 
# 3. 不要になったパッケージの削除
# && apt-get autoremove -y \
# && apt-get clean \
# && rm -rf /var/lib/apt/lists/* \
# && cd /crowi/node_modules && npm uninstall --save --unsafe-perm \
#     babel* \
#     gulp* \
#     webpack* \
# && rm -rf \
#     /root/.npm \
#     /tmp/*
RUN apt-get update && apt-get install -y \
    git \
    g++ \
    make \
    python \
&& git clone -b $CROWI_VERSION https://github.com/crowi/crowi.git \
&& cd /crowi \
&& npm install --unsafe-perm \
&& apt-get remove -y \
    git \
    g++ \
    make \
    python \
&& apt-get autoremove -y \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& cd /crowi/node_modules && npm uninstall --save --unsafe-perm \
    babel* \
    gulp* \
    webpack* \
&& rm -rf \
    /root/.npm \
    /tmp/*

ENV PORT ${PORT:-80}
EXPOSE $PORT

# timezoneをjstに
# ref: https://serverfault.com/questions/683605/docker-container-time-timezone-will-not-reflect-changes/683607
ENV TZ=Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

WORKDIR /crowi
COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["npm", "start"]
docker-entrypoint.sh
#!/bin/bash

export NODE_ENV=production
export MONGO_URI=${MONGO_URI:-mongodb://mongo:27017/crowi}
export REDIS_URL=${REDIS_URI:-redis://redis:6379/crowi}
export ELASTICSEARCH_URI=${ELASTICSEARCH_URI:-http://elasticsearch:9200/crowi}

exec "$@"
docker-compose.yml
version: '2'

services:
    crowi:
        build:
            context: .
            dockerfile: Dockerfile
        image: node:crowi
        links:
            - mongo:mogo
            - redis:redis
            - elasticsearch:elasticsearch
        ports:
            - 80:80

    mongo:
        image: mongo

    redis:
        image: redis:alpine

    # user: について
    #   commandを指定するとelasticsearchのdocker-entrypoint.shで
    #   user権限切り替えのスクリプトがうまく実行されずrootユーザーのままになる。
    #   root権限ではelasticsearchを実行できないのでuser: elasticsearchを指定する。
    #
    # command: について
    #   crowiの全文検索に必要なanalysis-kuromojiのインストールと、
    #   あると便利そうなウェブコンソールelasticsearch-headのインストールをしてから
    #   elasticsearchを実行
    elasticsearch:
        image: elasticsearch
        user: elasticsearch
        ports:
            - 9200:9200
        command:
            - "sh"
            - "-c"
            - "./bin/plugin install analysis-kuromoji; 
               ./bin/plugin install mobz/elasticsearch-head;
               elasticsearch;"

Docker file 구축


파일 구성처럼 파일을 준비한 후 crowi 디렉터리docker build로 이동하여 명령을 실행합니다.
console
$ docker build -t node:crowi .
빌딩은 시간이 오래 걸린다.한 10분 정도?
※ docker-compose.yml에 node:build crowi 명령이 적혀 있기 때문에 docker-composie up으로 빌딩과 용기의 시동을 함께 할 수 있지만 빌딩만 너무 오래 걸리면 불편하기 때문에 먼저 빌딩을 집행했습니다.

부팅 방법 및 종료 방법


부팅 방법

crowi 디렉토리docker-compose up로 이동합니다.
console
$ docker-compose up
# docker-compose up -dとするとバックグラウンド実行
시작 후 http://localhost에 액세스하여 Crowi의 설정 화면을 표시하면 ok입니다.
※ docker for mac을 사용할 때docker-machine ip docker machine의 IP를 확인하고, localhost 대신 docker machine의 IP를 입력

종료 방법

ctrl-c(배경 실행 경우docker-compose stop

Crowi에서 Elasticsearch 효율화


Crowi에 로그인하면 관리 -> 검색 관리 ->build now에서 유효합니다.
참조: 공식 블로그
처음 사용할 때는 Build Now 버튼을 눌러 색인을 만듭니다.앞으로 매 페이지의 제작/갱신은 모두 색인을 진행할 것이다.

푹 빠진 곳


여력이 있다면 시간이 있을 때 따로 기사를 쓸 수도 있고...
  • Docker 이미지의 시간대 변경
  • Docker 이미지 크기 축소
  • REDIS_URL
  • Elasticsearch 플러그인
  • 최후


    이번에 제작된 Docker 이미지는 추후 Docker Hub에 공개될 예정이다.

    추기 2016-09-1818:25


    Giithub과 Docker Hub에 공개됐다.
    Github
    https://github.com/nooby-noob/docker-node-crowi
    Docker Hub
    https://hub.docker.com/r/noobynoob/docker-node-crowi/
    다음 명령을 통해 그림의pull과 용기를 시작하고crowi를 실행할 수 있습니다.
    console
    git clone https://github.com/nooby-noob/docker-node-crowi.git
    cd docker-node-crowi
    docker-compose up
    
    단독으로 집행할 수도 있다.
    console
    docker run -p 80:80 noobynoob/docker-node-crowi:v1.5.0
    
    단독 실행 시 적절한 MONGOUri 및 REDISURL을 설정하십시오.

    좋은 웹페이지 즐겨찾기