Docker file에서 Crowi 구축 및 Docker Compose에서 Crowi 실행
컨텐트
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
DockerfileFROM 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.ymlversion: '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 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을 설정하십시오.
Reference
이 문제에 관하여(Docker file에서 Crowi 구축 및 Docker Compose에서 Crowi 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nooby/items/1a176b43a72905b9f93c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)