PC に PostgreSQL や MySQL など複数の DB を入れたり、バージョン違いを入れたいと思っても結構取り扱いが大変です。
特に Windows の場合。。。
ただ、Docker を使うと環境に依存せずに、簡単に構築できます!!
感謝!!
すぐ試したい方は、Docker Compose ファイル (docker-compose.yml) を作成して、下の YAML をコピペして、docker-compose up するだけ です。
ぜひお試しください。
Docker を使うにあたり、まず初めに
latest
は絶対に使わない- 動作を確認しているバージョンじゃないものが起動する可能性があるので、面倒でもバージョンは指定しましょ
- 実運用ではバージョンを指定するので、日頃からクセをつけておきましょく
- 公式サイトは絶対みる
- ネットに転がっている情報が古かったり、古い情報をそのまま使い続けている人もいるので。
docker ps
なのかdocker container ls
のどちらを使っていますか?(→ 結果は一緒ですが、docker container ls
の方が新しいコマンドですね)
Docker Compose ファイル
では、さっそく書いていきましょ。
version: "3.8"
services:
# Database
db:
image: mysql:5.7
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: test-db
MYSQL_USER: user1
MYSQL_PASSWORD: user1-passwd
# phpmyadmin
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- "8080:80"
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: password
- Python は port=3306 で MySQL にアクセスするので、コンテナ側のポートとローカルポートをバインド
docker-compose up -d
で起動docker-compose stop
で一時停止docker-compose down
でコンテナ削除
起動後は、localhost:8080
で phpMyAdmin にアクセスできます。
これだけで、バージョン固定の MySQL & phpMyAdmin が立ち上がるなんて。。すごいです。。
Python でアクセスできることを確認
データベースの port=3306
もアクセスできるようにしているので、Python から確認してみましょ。
まずは、mysql 接続に必要なモジュールを取得
pip install mysql.connector
Python ファイルでインポート
import mysql.connector
コネクションを取得
db_conn = mysql.connector.connect(
host="localhost",
user="user1",
passwd="user1-passwd",
database="test-db"
)
問題なく取得できれば、下記で true が返ってきます。
print(db_conn.is_connected())
データベース情報を取得
cur.execute("SHOW DATABASES")
for db in cur:
print(db)
忘れずに close しましょ。
cur.close()
db_conn.close()
まとめ
いろんなデータベースの、いろんなバージョンを扱うことができましたね。
ぜひお試しください。
よく使う記事はこちらにまとめているので、参考がてらぜひ見てください。
docker-compose down で