動作環境
動作した環境は、以下の通りです。
Mac
$ uname -r
16.6.0
$ docker -v; docker-machine -v; docker-compose -v;
Docker version 17.06.0-ce, build 02c1d87
docker-machine version 0.12.0, build 45c69ad
docker-compose version 1.14.0, build c7bdf9e
準備するファイル
準備するファイルは、以下の通りです。
フォルダ構成
docker/
├ sql/
│ └ ddl.sql
└ docker-compose.yml
サービスの定義をします。今回は、MySQLを立ち上げます。
docker-compose.yml
version: '2'
services:
mysql:
image: mysql:latest
container_name: <コンテナ名>
ports:
- "3306:3306"
volumes:
- ./sql:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: <rootのパスワード>
MYSQL_DATABASE: <作成するDB名>
MYSQL_USER: <ユーザ名>
MYSQL_PASSWORD: <ユーザのパスワード>
SQLファイルの準備は任意です。不要であれば準備する必要はありません。
コンテナ作成時に実行するSQLが必要であれば準備します。テーブル定義のDDLを準備しておくのも良いでしょう。
ddl.sql
# 例えばこんな感じのヤツ
CREATE TABLE `MEMBER` (
`MEMBER_ID` bigint(20) NOT NULL AUTO_INCREMENT,
`MEMBER_NAME` varchar(255) NOT NULL,
`LAST_UPDATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`MEMBER_ID`)
);
起動
dockerフォルダに移動して、コマンドを実行します。
バックグラウンドで実行
$ docker-compose up -d
STATUS欄が[Up xx seconds]となっていれば起動しています。
起動確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52fa752aad15 mysql:latest "docker-entrypoint..." 25 hours ago Up 8 seconds 0.0.0.0:3306->3306/tcp <コンテナ名>
接続
localhostの3306番ポートに、docker-compose.ymlで指定した<ユーザ名>と<ユーザのパスワード>で認証すれば接続することができます。
まとめ
まずは、Dockerで得られるメリットを感じてもらえるようDockerの概念には触れませんでした。やりたいことが増えてから学ぶでも良いと思います。
イメージ作成、複数コンテナの連携、データの永続化...
このエントリーが、誰かの1歩めになれば幸いです。