docker-compose を使った mysql コンテナの作成方法
docker-compose
をこの前初めて使ってみた。
そのときの備忘録として、docker-compose
を使って mysql
のイメージを
コンテナ化する方法とその解説を簡単に記載しています。
docker-composeってなによ?
docker-compose
とはすごいざっくり言うと
docker
コンテナを作成・起動するときの設定書みたいなもの。
docker-compose.yml
にコンテナ化したいイメージ名とか設定を記載しておくだけで、
複数のイメージをコンテナ化したりできる。便利。
docker-compose を使う準備
- 下記を読んで docker と docker-compose を install しましょう。
docker-compose
は docker
の version
が 1.9.0以上を使え と言ってくるので
docker
の version up
作業も必要です。
以下、 debian での環境構築方法をメモ程度に記載。
公式リファレンスを参考に作業しました
-
/etc/apt/sources.list.d/backports.list
を作成
sudo vi /etc/apt/sources.list.d/backports.list
- 上記のファイルに下記を追記
deb http://http.debian.net/debian wheezy-backports main
- apt-get を更新
apt-get update
- 古いdockerの削除
sudo apt-get purge lxc-docker
sudo apt-get purge docker.io
- もう一回 apt-get 更新。(必要?)
sudo apt-get update
- 認証用のあれこれをinstall
sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
※公式から抜粋したコマンドを使用
-
/etc/apt/sources.list.d/docker.list
を作成
sudo vi /etc/apt/sources.list.d/docker.list
- 上記のファイルに以下を追記
deb https://apt.dockerproject.org/repo debian-wheezy main
- やっと docker install
sudo apt-get install docker-engine
- docker を デーモンで起動
sudo service docker start
以上!
mysql コンテナ を docker-compose で作成する(本題)
ちなみに書き方は公式リファレンスにすごい詳細に書かれている。
作業手順
- 適当なディレクトリを作成してそこをカレントディレクトリにする
mkdir ~/work/tekitou
cd ~/work/tekitou
- docker-compose.ymlの準備
mysql:
image: mysql #image名。ローカルになければリモートから取ってくる
log_driver: json_file
container_name: "mysql_${BOOT_ENV}" # ${}で環境変数を使用できる
env_file: "${BOOT_ENV}.env" #環境変数を設定したenvファイルを指定する
ports:
- "33060:3360"
- stage.env を用意
MYSQL_ROOT_PASSWORD=stage_secret_password
- prod.env を用意
MYSQL_ROOT_PASSWORD=prod_secret_password
- ステージング用mysqlコンテナを作成
BOOT_ENV=stage docker-compose up -d mysql
- 本番用mysqlコンテナを作成
BOOT_ENV=prod docker-compose up -d mysql
- 接続してみる
mysql -h 127.0.0.1 -p 33060 -u root -p
=>パスワードを打ち込んで接続
※127.0.0.1は自分自身を指すIPアドレスを指定。localhostでもいい。
はい!
これだけ用意しておけば、ホストから 33060 で接続可能な
mysql コンテナが作成される。(しかも簡単にステージングと本番を変更できる)
いらなくなったら
BOOT_ENV=stage docker-compose down
で破棄もできます。
補足
docker-compose.yml
は これまで docker run
のときにいろいろ引数で渡していた設定を
全て記載できる。これだけでもデプロイ作業がずいぶん楽になったりする。
さらに最近 env_file:
の設定が追加され(もともとあったかも)、
環境変数を自由に変更できるようになった。
これまでシェルスクリプトを書いていたけど、
もうシェルスクリプトを書かなくてもいいかも。
ちなみに
docker-compose -f ファイル名
で読み込む設定ファイルも変更できる。
これらを複合すればデプロイ作業をもっと柔軟に出来るようになると思う。