#概要
らい さむ(@tyariponzu614 )です。
サーバーの入れ替えを行いました。
ホストはなるべくクリーンな状態を保ちたいため、
docker-compose
で以下のツールを構築しました。
また、docker run
にどんな引数が入っているかわからないと管理が大変です。
ymlを見ればどういうビルドがされたかわかるため、
保守が楽になるかなと思います。
ちなみにコンテナ間は連携していないです。
用途 | ツール名 |
---|---|
社内Wiki | Growi |
ソースコード管理 | gitlab |
ファイル共有 | samba |
タスク管理 | openproject |
##環境
> cat /etc/lsb-release
Ubuntu 18.04.3 LTS
> docker --version
Docker version 18.09.7, build 2d0083d
> docker-compose --version
docker-compose version 1.17.1, build unknown
##環境構築
> sudo apt-get update
> sudo apt-get upgrade
> sudo apt-get install docker
> sudo apt-get install docker-compose
##growi
公式ドキュメントのdocker-composeで構築します。
※一点ご注意ください。
ubuntuの前にraspberrypi model 2で試していますが、
どうやらalm7lアーキテクチャのため、
MongoDBイメージのビルドが失敗するようです。
本記事ではコミットNo. b5b96cf
を編集しています。
version: '3'
services:
app:
build:
context: .
dockerfile: ./Dockerfile
ports:
- 0.0.0.0:3000:3000 # localhost以外からのアクセスに対応
links:
- mongo:mongo
- elasticsearch:elasticsearch
depends_on:
- mongo
- elasticsearch
environment:
- MONGO_URI=mongodb://mongo:27017/growi
- ELASTICSEARCH_URI=http://elasticsearch:9200/growi
- PASSWORD_SEED=changeme
# - FILE_UPLOAD=mongodb # activate this line if you use MongoDB GridFS rather than AWS
# - FILE_UPLOAD=local # activate this line if you use local storage of server rather than AWS
# - MATHJAX=1 # activate this line if you want to use MathJax
# - PLANTUML_URI=http:// # activate this line and specify if you use your own PlantUML server rather than public plantuml.com
# - HACKMD_URI=http:// # activate this line and specify HackMD server URI which can be accessed from GROWI client browsers
# - HACKMD_URI_FOR_SERVER=http://hackmd:3000 # activate this line and specify HackMD server URI which can be accessed from this server container
# - FORCE_WIKI_MODE='public' # activate this line to force wiki public mode
# - FORCE_WIKI_MODE='private' # activate this line to force wiki private mode
command: "dockerize
-wait tcp://mongo:27017
-wait tcp://elasticsearch:9200
-timeout 60s
npm run server:prod"
restart: unless-stopped
volumes:
- growi_data:/data
mongo:
image: mongo:3.6
restart: unless-stopped
volumes:
- mongo_configdb:/data/configdb
- mongo_db:/data/db
elasticsearch:
build:
context: ./elasticsearch
dockerfile: ./Dockerfile
environment:
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms256m -Xmx256m" # increase amount if you have enough memory
ulimits:
memlock:
soft: -1
hard: -1
restart: unless-stopped
volumes:
- es_data:/usr/share/elasticsearch/data
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
volumes:
growi_data:
mongo_configdb:
mongo_db:
es_data:
##gitlab
docker-compose
で管理できるようにymlファイルを作成します。
services:
gitLab:
image: gitlab/gitlab-ce:latest
ports:
- 0.0.0.0:10080:80
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
##samba
共有フォルダを以下の権限を与えないと、
クライアントからファイルの読み書きができません。
> cd ~/samba/pub
> sudo chmod 777 pub
> ls -la
drwxrwxrwx 2 xxxxx xxxxxx 4096 1月 29 12:07 pub
公式のイメージが無かったため、スター数が多いdperson/samba
を使用します。
> sudo docker search samba
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
dperson/samba 324 [OK]
svendowideit/samba Sharing a Docker container's volume should b… 55 [OK]
docker-compose
で管理できるようにymlファイルを作成します。
samba:
image: dperson/samba
container_name: samba
ports:
- "137:137/udp"
- "138:138/udp"
- "139:139/tcp"
- "445:445/tcp"
volumes:
- ~/samba/pub:/mnt/pub:rw
command:
"-s public;/mnt/pub;yes;no;yes;all;none"
restart: unless-stopped
##OpenProject
スター数が多いopenproject/community
を使用します。
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
openproject/community Docker image for OpenProject Community Editi… 167
progtologist/openproject OpenProject 5.0 17 [OK]
docker-compose
で管理できるようにymlファイルを作成します。
version: '3'
services:
openproject:
image: openproject/community:latest
ports:
- 0.0.0.0:30080:80
volumes:
- ./db-data:/var/lib/postgresql/data
- ./data:/var/db/openproject
environment:
SECRET_KEY_BASE: openproject_secret_key
#ビルド方法
sudo docker-compose up -d
-d
デタッチモードです。バックグラウンドで実行してくれます。
#結果
docker-composeでサーバー管理が楽になりそうです。