SI業界においてはSaaSで提供されているSlackやGitHubなどのエレガントなツールを使えないことが多いのです。
本記事では、そうしたSaaSを利用できないSIerの案件立ち上げ時に役立ちそうなツールをDockerでインストールする手順をまとめてみました。
対象とするソフトウェアは、以下の通りです。
細かい設定は色々あるのですが、ざっくり記載しています。
カテゴリ | ソフトウェア | バージョン |
---|---|---|
チャットツール | Mattermost | 最新版 |
Rocket.chat | 最新版 | |
バージョン管理 | GitLab CE | 最新版 |
CI/CD | Jenkins | 最新版 |
チケット管理 | Redmine | 最新版 |
文書管理 | Alfresco | 2.2.0 |
ファイルストレージ | Owncloud | 10.0 |
バージョン管理(GitLab)
インストール
mkdir -p gitlab-docker
cd gitlab-docker
以降の作業はgitlab-docker
ディレクトリで実施します。
docker-compose.yml
ファイルを作成します。
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.local' # ここは環境に応じて変更する
unicorn['socket'] = '/opt/gitlab/var/unicorn/gitlab.socket' # Macの場合はunicornが起動しなかった。
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- './srv/gitlab/config:/etc/gitlab'
- './srv/gitlab/logs:/var/log/gitlab'
- './srv/gitlab/data:/var/opt/gitlab'
起動
以下コマンドで起動します。
docker-compose up -d
[特権ユーザの初期アカウント]
- ユーザ名:
root
- パスワード:
5iveL!fe
チャットツール編
筆者の経験上、チャットツールは以下の2つがSlackの代わりとしていい感じだと思います。
- Mattermost
- Rocket.chat
以下、これらのツールのインストール方法について記載しています。
Mattermost編
参考)
GitHub - mattermost/mattermost-docker: Dockerfile for mattermost in production
インストール
git clone https://github.com/mattermost/mattermost-docker.git
cd mattermost-docker
以降の作業はmattermost-docker
で実施します。
docker-compose.yml
の該当部分を修正します。
# コメントアウトされているので外す
args:
- edition=team
# Macで動かす場合は/etc/localtimeの部分を以下のように修正する。
# 3箇所あるので注意してください。
volumes:
# - /etc/localtime:/etc/localtime:ro
environment:
- TZ=`ls -la /etc/localtime | cut -d/ -f8-9`
ついでに自己証明書も作っておきます。
以下記事が参考になります。
自己署名証明書の作成方法 - Qiita
パスフレーズなしで作成する場合は、以下の通りです。
# 秘密鍵作成
openssl genrsa -out key-no-password.pem 2048
# CSR作成
$ openssl req -new -key key-no-password.pem -out ca-csr.pem
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:
Common Name (eg, fully qualified host name) []:com.example
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
# 自己証明書作成
$ openssl req -x509 -key key-no-password.pem -in ca-csr.pem -out ./volumes/web/cert/cert.pem -days 3560
起動
以下コマンドで起動します。
docker-compose up -d
WebブラウザでアクセスできればOKです。
バージョンアップする場合
最新バージョンで構築する場合
git pull
docker-compose build
docker-compose up -d
Rocket.chat編
MatterostではなくてRocket.chatでチャットしたい場合の手順について記載しています。
docker-compose.yml
を以下のように作成しました。
db:
image: mongo:latest
restart: always
volumes:
- ./data/runtime/db:/data/db
- ./data/dump:/dump
command: mongod --smallfiles
rocketchat:
restart: always
image: rocketchat/rocket.chat:latest
environment:
- MONGO_URL=mongodb://db:27017/rocketchat
- ROOT_URL=http://localhost
- Accounts_UseDNSDomainCheck=false
links:
- db:db
ports:
- 80:3000
起動
docker-compose up -d
CI/CD(Jenkins)
つづいてJenkinsです。
ここでは、マスターとスレーブの構成(SSH接続)で手順を記載しています。
インストール
スレーブ用のマシンを構築するためにDockerfile
を作成します。
FROM centos:latest
RUN yum install -y sudo openssh-server java-1.8.0-openjdk git gcc make openssl
RUN sed -ri 's/^#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN mkdir -p /var/run/sshd
RUN ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key
RUN useradd -d /home/jenkins -m -s /bin/bash jenkins
RUN echo jenkins:jenkins | chpasswd
RUN echo 'jenkins ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
マスター1台、スレーブ2台で構築するためにdocker-compose.yml
を以下のように作成します。
version: '3'
services:
master:
container_name: master
image: jenkins/jenkins:lts
ports:
- 8080:8080
volumes:
- ./jenkins/master/jenkins_home:/var/jenkins_home
slave01:
container_name: slave01
build:
dockerfile: Dockerfile
context: .
slave02:
container_name: slave02
build:
dockerfile: Dockerfile
context: .
起動
以下のコマンドで実行します。
docker-compose up -d
http://IPアドレス:8080
で接続できるはずです。
Adminユーザの初期パスワードはjenkins/master/jenkins_home/secret.key
に記載されています。
スレーブマシンを利用可能にする
上記でスレーブを2台構築したので、スレーブマシンとして利用できるようにします。
Jenkinsの管理
→ノードの管理
から以下を参考に設定してください。
SSHのユーザ、パスワードはDockerfile
を見るとわかるのですが、jenkins/jenkins
になっています。
以下画面のように同期が取れていればOKです。
チケット管理(Redmine)
version: '3'
services:
redmine:
image: redmine:latest
restart: always
ports:
- 80:3000
environment:
REDMINE_DB_MYSQL: db
REDMINE_DB_PASSWORD: redmine
volumes:
- ./redmine/data/files:/usr/src/redmine/files
- ./redmine/data/log:/usr/src/redmine/log
- ./redmine/data/plugins:/usr/src/redmine/plugins
- ./redmine/data/public/themes:/usr/src/redmine/public/themes
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: redmine
MYSQL_DATABASE: redmine
volumes:
- ./db/data:/var/lib/mysql
[管理者の初期アカウント]
- ユーザ名:
admin
- パスワード:
admin
おまけ)テーマのインストール
おまけでテーマの設定を参考程度に記載します。
テーマはここから選ぶのがよさそうです。
Redmine Themes - Redmine Themes Directory
# テーマをダウンロード
# 今回はFlat Theme(http://www.redminethemes.org/redmine-themes/flat-theme)をインストールします。
git clone https://github.com/tsi/redmine-theme-flat.git
# 適切な場所に配置
mv redmine-theme-flat redmine/data/public/themes
設定
→表示
でテーマを選択して保存します。
するとテーマが代わります。
文書管理(Alfresco)
参考)
Deploying using Docker Compose | Alfresco Documentation
少なくともメモリが6GB必要なようです。
Macで試す場合は、Dockerの設定を変更してください。
インストール
公式ページに方法が記載されていました。そのままです。
git clone https://github.com/Alfresco/acs-community-deployment.git
cd acs-community-deployment
git checkout 2.2.0
起動
cd docker-compose
docker-compose up -d
起動に失敗した場合には、以下コマンド実行してから再度設定を見直して実行してください。
docker-compose down --rmi all
起動に成功したら
http://IPアドレス:8080/share
でアクセスできます。

[特権ユーザの初期設定]
- ユーザ名:
admin
- パスワード:
admin
となっています。
ファイルストレージ(Owncloud)
これはここに書くまでもなく、公式ページが整備されていたので、省略します。以下ページをご参照ください。
Installing with Docker :: ownCloud Documentation
手順通りに設定して起動すれば、
http://IPアドレス:8080
で接続できると思います。

まとめ
以上、簡単でしたがDockerを使って簡単にプロジェクト運営に必要なツール群をインストールできるようになったと思います。