IBM Bluemix 上でRedmineを動かすまで(その2: https化, 外部DB化)

[その１](http://qiita.com/kkoiwai/items/5fa5cf26e391f7182d65)では、Bluemix上でRedmineのコンテナを起動するところまでいきました。
今回は、

 * Letsencryptを利用してHTTPS化
 * Postgresを利用してDBを外部化

したいと思います。
（オレオレ証明書の場合はググればいくらでもやり方が出てくるので省略します。

## Letsencryptを利用してHTTPS化

### Letsencryptの利用

[Get HTTPS for free!](https://gethttpsforfree.com/)を利用して、手動で証明書を取得します。

ここは頑張ってください。

うまくいくと、Step 5: Install Certificate (see below) まで来ます。
その中の、Apache用の設定を見ながら、
<img width="613" alt="スクリーンショット 2016-08-27 12.27.21 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/135431/52154421-0b52-2fbf-411e-00a91cf67f72.png">

 * domain.crt
 * intermediate.pem
 * domain.key

を、ローカルの任意のディレクトリに作っておきましょう。

### rails, Dockerfileの修正
Dockerfileで適当な場所に上書きするので、上の3つのファイルと、下記の2つのファイルを同じディレクトリに置いておいてください。

https://github.com/kkoiwai/redmine/blob/master/3.3/rails

```ruby:redmine/3.3/rails
#!/usr/bin/env ruby

require 'rails/commands/server'
require 'rack'
require 'webrick'
require 'webrick/https'

module Rails
    class Server < ::Rack::Server
        def default_options
             

            super.merge({
                :Port => 3000,
                :environment => (ENV['RAILS_ENV'] || "development").dup,
                :daemonize => false,
                :debugger => false,
                :pid => File.expand_path("tmp/pids/server.pid"),
                :config => File.expand_path("config.ru"),
                :SSLEnable => true,
                :SSLPrivateKey => OpenSSL::PKey::RSA.new(File.read('/usr/src/redmine/ssl/private/domain.key'), ''),
                :SSLCertificate => OpenSSL::X509::Certificate.new(File.read('/usr/src/redmine/ssl/certs/domain.crt')),
                :SSLCACertificateFile => '/usr/src/redmine/ssl/certs/intermediate.pem',
                :SSLCertName => [["CN", WEBrick::Utils::getservername]]
            })
        end
    end
end



APP_PATH = File.expand_path('../../config/application',  __FILE__)
require_relative '../config/boot'
require 'rails/commands'
```

https://github.com/kkoiwai/redmine/blob/master/3.3/Dockerfile

```redmine/3.3/Dockerfile
(前略）
COPY rails /usr/src/redmine/bin
COPY domain.crt /usr/src/redmine/ssl/certs/
COPY intermediate.pem /usr/src/redmine/ssl/certs/
COPY domain.key /usr/src/redmine/ssl/private/
(後略）
```

### Dockerコンテナを作成

```$ docker build . ``` あとはtag付けしてpushして起動。

## Postgresを利用してDBを外部化

### Postgresコンテナの登録、起動

Redmineと同様です。

```
$ docker pull postgres
$ docker tag postgres registry.ng.bluemix.net/aaaaaaa/postgres
$ docker push registry.ng.bluemix.net/aaaaaaa/postgres
```

コンテナ起動時に、DBのパスワードを設定します。
<img width="505" alt="スクリーンショット 2016-08-27 1.23.12 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/135431/9e25b5a5-eb9f-cd04-535e-bda3d7ffda97.png">

<img width="507" alt="スクリーンショット 2016-08-27 12.44.22 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/135431/4325f263-9146-ac75-f7f6-6b48861f7628.png">


## Redmineコンテナの起動

PostgresのローカルIPをコンソールからコピーして、
<img width="617" alt="スクリーンショット 2016-08-27 1.21.04 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/135431/9505e072-ae3b-b64f-b9e9-280bf33a91d6.png">

環境変数に設定して起動。
<img width="495" alt="スクリーンショット 2016-08-27 1.01.59 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/135431/0f130506-bf34-c0c6-910b-a19140b7200a.png">


うまくいったみたいです。

<img width="881" alt="スクリーンショット 2016-08-27 1.24.11 PM.png" src="https://qiita-image-store.s3.amazonaws.com/0/135431/4e9cf7b5-d370-2115-815e-695d52eea91e.png">