Help us understand the problem. What is going on with this article?

【初級】docker-compose を使った mysql コンテナの作成方法

More than 3 years have passed since last update.

docker-compose を使った mysql コンテナの作成方法

docker-compose をこの前初めて使ってみた。

そのときの備忘録として、docker-compose を使って mysql のイメージを
コンテナ化する方法とその解説を簡単に記載しています。

docker-composeってなによ?

docker-compose とはすごいざっくり言うと
docker コンテナを作成・起動するときの設定書みたいなもの。

docker-compose.yml

にコンテナ化したいイメージ名とか設定を記載しておくだけで、
複数のイメージをコンテナ化したりできる。便利。


docker-compose を使う準備

docker-composedockerversion1.9.0以上を使え と言ってくるので
dockerversion 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の準備
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 を用意
telotou/stage.env
MYSQL_ROOT_PASSWORD=stage_secret_password
  • prod.env を用意
tekitou/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 ファイル名

で読み込む設定ファイルも変更できる。

これらを複合すればデプロイ作業をもっと柔軟に出来るようになると思う。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away