Docker+自前のPostfixでRedmineを構築する


環境・要件

CentOS Linux release 7.5.1804 (Core)

  • Redmine3.2.0を使いたい(移設のためバージョンちょっと古めです)
  • DBはMySQL
  • チケット更新時にはメールを飛ばしたい
  • http://IPアドレス でアクセスしたい(SSL化はとりあえずやらない)
  • Dockerを使ってみたい
  • 本当はDockerfileを書いてやりたかったけどエラーでうまく立ち上がらず挫折

作業開始

Dockerインストール&イメージ取得

redmineのバージョンは古いのを指定しています

$ sudo yum install docker
$ docker pull sameersbn/redmine:3.2.0
$ docker pull sameersbn/mysql:latest

データストア作成

コンテナが落ちてもデータは残るようにするため(永続化というやつ)
/home/docker に作ってしまったのですが普通は /srv/docker に作るみたいですね…

$ mkdir -p /home/docker/redmine3.2.0/mysql
$ mkdir -p /home/docker/redmine3.2.0/redmine

SELinuxの設定

これをやらないとdocker run で Permission denied のエラーが出てハマります

$ chcon -Rt svirt_sandbox_file_t /home/docker/redmine3.2.0/mysql
$ chcon -Rt svirt_sandbox_file_t /home/docker/redmine3.2.0/redmine

コンテナ作成

$ docker run --name=mysql-redmine -d --env='DB_NAME=redmine' --env='DB_USER=redmine' --env='DB_PASS=password' -v /home/docker/redmine3.2.0/mysql:/var/lib/mysql sameersbn/mysql

$ docker run --name=redmine -d -p 80:80 --link=mysql-redmine:mysql -v /home/docker/redmine3.2.0/redmine:/home/redmine/data sameersbn/redmine:3.2.0

しばらく待つと http://IPアドレス でアクセスできるようになりました!とても簡単

メールの設定

ここがかなりハマったところです…

まずは ホストOS 上にメールサーバーを立てます。
(最初Redmineコンテナにメールサーバーを立てようとしていてハマっていました…)

PostfixのインストールとMTA設定

PostfixをデフォルトのMTAに設定します

$ yum install postfix
$ sudo alternatives --config mta
  選択       コマンド
-----------------------------------------------
 + 1           /usr/sbin/sendmail.postfix
*  2           /usr/sbin/sendmail.sendmail
(Postfixを選択する)

この時点で $ sendmail [email protected] コマンドでメール送信ができるようになるはず

RedmineコンテナのIPを調べる

$ docker inspect redmine
(略)
"IPAddress": "172.17.0.3",
(略)

172.17.0.3 のようです。

Postfixの設定&再起動

mynetworksにコンテナを含むIPを設定(172.17.0.0/16)
inet_interfacesにdocker0のIP?を設定(172.18.0.1)
よく理解できてないのですがとりあえずこれで動きましたというかんじです

# vi /etc/postfix/main.cf
mynetworks = 168.100.189.0/28, 127.0.0.0/8, 172.17.0.0/16
inet_interfaces=localhost, 127.0.0.1, 172.18.0.1

# systemctl restart postfix

firewallの設定

コンテナからのアクセス(172.17.0.0/16)を許可します

# firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="172.17.0.0/16" service name="smtp" accept' 
# firewall-cmd --reload

Redmineの設定

Redmineコンテナの中に入ります
$ docker exec -it redmine bash

configuration.yml を作成&編集

$ mv  /home/redmine/redmine/config/configuration.yml.example /home/redmine/redmine/config/configuration.yml
email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: 172.18.0.1
      port: 25

exitして、redmineを再起動
$ docker restart redmine

http://IPアドレス/settings?tab=notifications から「テストメールを送信」で送信できることを確認しました!

今度は SSL化 & DockerFileを書いてみたいです!