docker

初心者のDocker入門4 - Redmine + MySQL

More than 1 year has passed since last update.

前回ではコンテナの基本操作に関して学んだので、今回はコンテナを実践的に使用した内容に関してアウトプットします。

行ったことはタイトル通り、MySQLを使用したRedmineの立ち上げです。

前提

コンテナを操作した環境は以下になります。

  • Mac book Pro(OS X El Capitan)
  • Docker for Mac(1.12.0-rc4)

手順

  1. MySQLのコンテナを起動
  2. Redmineのコンテナを起動

MySQLのコンテナを起動

Docker Hubにある公式のMySQLイメージを使用しました。

$ docker run -d --name some-mysql -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=redmine mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

rootのパスワード、データベース名の指定、および起動時に実行するコマンドにデータベースで使用する文字コードを渡して、バックグラウンドでコンテナを起動しています。

注意点としては公式のMySQLのイメージはデフォルトの文字コードが「latin1」になっていますので、文字コードを指定しないとRedmine使用時に日本語の登録ができずに「Internal error」となってしまいます。

また、「--character-set-server」、「--collation-server」はコンテナの起動時に実行するコマンドに渡すオプションなので、指定する位置に注意が必要です。(イメージの後ろに指定する)

公式MySQLイメージのリポジトリ - README.md

Redmineのコンテナを起動

MySQLと同様に公式のRedmineのイメージを使用します。

$ docker run -d --name some-redmine -p 3000:3000 --link some-mysql:mysql redmine

こちらで行っていることは、先に起動したMySQLコンテナへのリンクを指定して、ホストのポート3000番とコンテナのポート3000番をマッピングした上で、バックグラウンドで起動しています。

公式Redmineイメージの説明に記載しているコマンドには「-p 3000:3000」の記載がありません。(ポートマッピングに関しての説明はあります。)
ですので、そのままコマンドを使用しただけではコンテナにブラウザから接続できないので、コンテナ起動時にポートマッピングを行う必要があります。

また、RedmineコンテナからMySQLコンテナへの接続を可能にする、オプション「--link」を指定する際はMySQLコンテナが先に起動してないと失敗します。

結果

これでlocalhost:3000にアクセスしてRedmineが使用可能になりました。
Redmine_top.png

所感

MySQLの文字コードの件で少し詰まってしまいましたが、ただ立ち上げるだけであれば5分もかからなかったです。
実運用に耐えるかは考慮しないといけない点が他にもあるかと思いますが、Redmineを個人的に使用してみるのであれば全然使えるかなと思います。

最後に

初心者のDocker入門ということで第1回〜第4回とアウトプットしてきました。
基本的なところは一通り触れたかと思いますので、今回で「初心者のDocker入門」に関しては終わりにしようと思います。

今後は引き続きDockerを触ってアウトプットしていく予定です。