はじめに
- 開発のために MySQL 5.5 を手元の Windows にインストールしなければならない。
- はっきりいって嫌だ。
- Windows 起動時に自動的に MySQL も起動してしまったり。
- Windows のポートも使用されてしまったり。
- Docker で再現できるのでは?
- Nginx を Docker で使ったとき、http://localhost でウェブページにアクセスできた。
- Nginx を Docker で使ったとき、docker run 時、-p 8080:80 などとすれば、http://localhost:8080 でアクセスできた。
- つまり、ホスト (Docker をインストールしたマシン) からコンテナに対して、localhost と指定したポート番号でアクセスできるということ。
- A5:SQL Mk-2 – フリーの汎用SQL開発ツール/ER図ツール .. 松原正和 からアクセスできるか、やってみる。
Docker Compose の記述
version: '3' services: db: image: mysql:5.5 ports: - "13306:3306" environment: MYSQL_ROOT_PASSWORD: root MYSQL_USER: testdocker MYSQL_PASSWORD: testdocker MYSQL_DATABASE: testdocker volumes: - db-data:/var/lib/mysql volumes: db-data:
Docker Compose による MySQL5.5 の起動
先程の docker-compose.yml ファイルのあるフォルダで次を実行します。
# 起動 docker-compose up -d # 起動確認 docker-compose ps # 停止及び破棄 docker-compose down
A5:SQL Mk-2 からのアクセス確認
- データベース > データベースの追加と削除 > 追加
- 次を入力
- ホスト名: localhost
- ポート番号: 13306
- ユーザーID: root
- パスワード: root
- ほかはデフォルトのまま
- テスト接続して、つながることを確認しました♪
- OK > localhost13306 などの名前をつけて保存
次に、適当なテーブルとレコードを作ってみました。
create table member(id int, name varchar (20)); insert into member (id, name) values (1, "ando"); insert into member (id, name) values (2, "inoue"); insert into member (id, name) values (3, "usami");
Docker の MySQL5.5 を停止及び破棄してみたり再度起動してみたりする
docker-compose down
この後、MySQL にアクセスしようとすると、当然ながらできません。次のようなエラーとなりました。
--------------------------- A5:SQL Mk-2 64bit edition Version 2.13.2 --------------------------- Cannot connect to server on host 'localhost': 対象のコンピューターによって拒否されたため、接続できませんでした。. Socket Error Code: 10061($274D) --------------------------- OK ---------------------------
では、再び起動して接続してみます。
docker-compose up -d
今度は接続できました。
そして、volumes で永続化しているため、コンテナが一旦破棄され再度作られましたけれども、作成したテーブルやレコードを変わらず残っていました。
補足。DB データを消すには?
# コンテナ破棄時に削除する docker-compose down -v # データを確認して破棄する docker-compose down docker volume ls docker volume rm VOLUME NAME
おわりに
Docker で端末の状態を汚さずに環境を整えることが気軽にできる、ということを、知識として知っていました。
今回はそれを実感できました。とても嬉しいです♪
以上です。