0%

CoreOSのfleetからfigに移行する - Part3: NginxとSSL証明書

これまではOpenRestyを使い動的にHTTP Routingをしてきましたが、figへの変更にあわせて単純なNginxのリバースプロキシと、起動時にsedでlinkされた環境変数を置換する方法にします。またNgixの設定ファイルやSSL証明書もイメージに入れていたのでプライベートのレジストリを使っていました。Docker Hub Registryに公開するため、SSL証明書などはDockerホストのディレクトリに保存するように変更します。fleetのunitファイルに比べて、リファクタリングしたこともありfig.ymlはかなりスッキリしました。

fig.yml

Dockerホストに/opt/nginx/ディレクトリを作成します。/opt/nginx/certsには証明書を配置します。/opt/nginx/sites-enabledディレクトリには、masato/nginx-rpコンテナの起動時にテンプレートから生成するdefaultファイルが配置されます。ここでlinkされたMoinMoinコンテナのIPアドレスを置換してupstreamに指定します。

fig.yml
moinmoin:
image: masato/moinmoin
command: FooBar
volumes_from:
- data
environment:
VIRTUAL_HOST: example.com
nginx:
image: masato/nginx-rp
links:
- moinmoin:web
volumes:
- /opt/nginx/certs:/etc/nginx/certs
- /opt/nginx/sites-enabled:/etc/nginx/sites-enabled
- /opt/nginx/log:/var/log/nginx
ports:
- "80:80"
- "443:443"
data:
image: ubuntu:14.04
command: /bin/bash
volumes:
- /data

superuserの作成

command: FooBarで指定しているユーザーはMoinMoinのsuperuserになります。このMoinMoinの唯一の接続ユーザーになります。docker execでコンテナに接続してユーザーファイルを作成します。

$ docker exec -it root_moinmoin_1 bash
$ PYTHONPATH=/usr/local/share/moin /usr/local/bin/moin account create --name=FooBar --email=foo@bar.com --password=password

/data/moin/user/以下に、 ##########.##.#####のフォーマットでユーザーファイルが作成されるので、権限を変更して使えるようにします。

$ chown www-data /data/moin/user/##########.##.#####
$ rm -fr /data/moin/user/cache

Nginx Reverse Proxy

masato/nginx-rpにDockerイメージを公開しました。 Automated BuildのGitHubはmasato/nginx-rpです。README.mdはちゃんと書かないといけないです。