LoginSignup
19

More than 3 years have passed since last update.

[SIer向け]案件立ち上げ時に役立ちそうなツールをDockerでインストールしてみる

Last updated at Posted at 2019-03-30

SI業界においてはSaaSで提供されているSlackやGitHubなどのエレガントなツールを使えないことが多いのです。

本記事では、そうしたSaaSを利用できないSIerの案件立ち上げ時に役立ちそうなツールをDockerでインストールする手順をまとめてみました。

対象とするソフトウェアは、以下の通りです。
細かい設定は色々あるのですが、ざっくり記載しています。

カテゴリ ソフトウェア バージョン
チャットツール Mattermost 最新版
Rocket.chat 最新版
バージョン管理 GitLab CE 最新版
CI/CD Jenkins 最新版
チケット管理 Redmine 最新版
文書管理 Alfresco 2.2.0
ファイルストレージ Owncloud 10.0

:cat: バージョン管理(GitLab) :cat:

インストール

mkdir -p gitlab-docker
cd gitlab-docker

以降の作業はgitlab-dockerディレクトリで実施します。

docker-compose.ymlファイルを作成します。

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

26f0c898.png

[特権ユーザの初期アカウント]
- ユーザ名: root
- パスワード: 5iveL!fe

:monkey: チャットツール編 :monkey:

筆者の経験上、チャットツールは以下の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の該当部分を修正します。

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です。

1528304c.png

バージョンアップする場合

最新バージョンで構築する場合

git pull
docker-compose build
docker-compose up -d

Rocket.chat編

MatterostではなくてRocket.chatでチャットしたい場合の手順について記載しています。

docker-compose.ymlを以下のように作成しました。

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

aea7369c.png

:mouse: CI/CD(Jenkins) :mouse:

つづいて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を以下のように作成します。

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になっています。

31bac39a.png

以下画面のように同期が取れていればOKです。

86d53b28.png

:red_car: チケット管理(Redmine) :red_car:

docker-compose.yml
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

bb3bcd8c.png

[管理者の初期アカウント]
- ユーザ名: 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

設定表示でテーマを選択して保存します。

f0924e50.png

するとテーマが代わります。

104a8d74.png

:dango: 文書管理(Alfresco) :dango:

参考)
Deploying using Docker Compose | Alfresco Documentation

少なくともメモリが6GB必要なようです。
Macで試す場合は、Dockerの設定を変更してください。
スクリーンショット 2019-03-31 15.40.19.png

インストール

公式ページに方法が記載されていました。そのままです。

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
でアクセスできます。

スクリーンショット 2019-03-31 16.07.09.png

[特権ユーザの初期設定]
- ユーザ名: admin
- パスワード: admin

となっています。

:file_folder: ファイルストレージ(Owncloud) :file_folder:

これはここに書くまでもなく、公式ページが整備されていたので、省略します。以下ページをご参照ください。

Installing with Docker :: ownCloud Documentation

手順通りに設定して起動すれば、
http://IPアドレス:8080
で接続できると思います。

スクリーンショット 2019-03-31 16.12.10.png

:smiley_cat: まとめ :smiley_cat:

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19