page_adsence

2016年6月29日水曜日

Nginxのstable版とmainline版に関して

開発環境でNginxの1.9を利用していたのですが、インフラ屋さんに1.10と1.11が出てますけど、どっちにしますかと言われたので調べてみた。
yumでインストールしたNginxのバージョンが1.9だったので、何も考えずに1.9を使っていたのですが、どうやらNginxはナンバリング方法がちょっと特殊っぽい。

Nginxのバージョン1.10と1.11のリリースノート

図を見てもらうだけで大体理解出来ると思いますが、
現在Nginxでは「mainline版」と「stable版」の2つをリリースしている。

mainline版(1.11が最新)

新機能の追加、仕様変更、バグ修正等が行われる。

stable版(1.10が最新)

mainline版からフォークされたもので、mainline版で行った重要なバグ修正のみをstable版にマージするようになっている。

といった形になっています。
記事を軽く読んだ限りですと、バグ修正もmainlineに先に取り込まれるので、mainlineを使った方が安定するようです。
なのでインフラ屋さんにはmainline版である1.11を使ってもらうようにお願いしました。
取り敢えずNginx使おうと思って始めたので、バージョンをあまり気にしていなかったのですが、きちんと確認するべきですね・・・。

2016年6月15日水曜日

docker-composeのextra_hosts

docker-composeのリファレンスを読んでいたら、extra_hostsなるオプションがあった。
自分が初めてDocker使った時にあったのかどうかは調べてないのですが、こんな便利なオプションを見逃していたなんて・・・。
dockerコンテナは基本的に起動時にIPを動的に割り当てているため、毎回コンテナ上のhostsファイルが書き換わってしまい、独自の設定を入れる方法がなかった。
力技でやる場合は、ENTRYPOINTとかのシェルスクリプト内でhosts書き換えたりする程度しか思いついていなかった。

早速使ってみた。
※ローカルにphpやmysqlという名前のイメージがある状態で行っています。
適当なディレクトリにdocker-compose.ymlを作って、下記の内容を記述します。
$ vi docker-compose.yml
mysql:
  image: mysql
  container_name: mysql
  hostname: mysqldb
  ports:
    - 3306:3306

php:
  image: php
  container_name: php
  hostname: php
  extra_hosts:
    - test1.com:111.111.111.111
    - test2.com:222.222.222.222
  links:
    - mysql
この状態で
$ docker-compose up -d
してから、コンテナ内に入る。
$ docker exec -it php bash
で、hostsファイルを確認する。
# view /etc/hosts
172.17.2.103    php
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.2.95       mysql mysqldb
172.17.2.95       mysql_1 mysqldb mysql
111.111.111.111   test1.com
222.222.222.222   test2.com
こんな感じで、記載される様になります。
便利!

※但し、大量のhostsを記載する場合はdocker-compose.ymlのファイル内が長くなってしまうので、
その辺はある程度長くなってしまったら力技の方がいいのかもしれないです。
extra_hostsもファイル指定出来ればいいんですけどね。