カテゴリー
Microsoft

ローカル開発環境の古い MySQL、バージョン 5.5 を Docker で再現できるかやってみましたらできました♪

はじめに

  • 開発のために 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 からのアクセス確認

  1. データベース > データベースの追加と削除 > 追加
  2. 次を入力
    • ホスト名: localhost
    • ポート番号: 13306
    • ユーザーID: root
    • パスワード: root
    • ほかはデフォルトのまま
  3. テスト接続して、つながることを確認しました♪
  4. 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 で端末の状態を汚さずに環境を整えることが気軽にできる、ということを、知識として知っていました。

今回はそれを実感できました。とても嬉しいです♪

以上です。

コメントを残す