ローカル環境に docker-compose で mysql コンテナを立ち上げる
はじめに
mysql の公式イメージを使用して、docker-compose で mysql コンテナを立ち上げた時のメモです
環境
- macOS Mojave 10.14
- docker 18.09.2
- docker-compose 1.24.1
docker-compose ファイル作成
docker-compose.yml
version: "3"
services:
database:
image: mysql:5.7
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: hoge
MYSQL_DATABASE: testdb
volumes:
- /tmp/test_mysql:/var/lib/mysql
ports:
- 3306:3306
-
version
: composeファイルのフォーマットバージョン。2019/7/6時点の最新バージョン3
を指定 -
command
: 日本語や絵文字に対応するため、文字コードとcollationをutf8mb4
に設定 -
volumes
: コンテナ内の/var/lib/mysql
にデータが書き込まれるようなので、ローカルの/tmp/test_mysql
をマウントし、データを保持できるようにしています
mysqlを起動
$ docker-compose up -d
$ docker-compose logs -f
Creating network "tmp_default" with the default driver
Creating tmp_database_1
Attaching to tmp_database_1
database_1 | Initializing database
...
(省略)
...
database_1 | 2019-07-06T09:21:11.935739Z 0 [Note] Event Scheduler: Loaded 0 events
database_1 | 2019-07-06T09:21:11.936773Z 0 [Note] mysqld: ready for connections.
database_1 | Version: '5.7.26' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------
tmp_database_1 docker- Up 0.0.0.0:3306->3306/
entrypoint.sh mysql tcp, 33060/tcp
...
ポート3306で起動しました!
mysqlに接続
$ mysql -u root -p -h 127.0.0.1 -P 3306 testdb
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
ログインできた!
文字コード確認
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
utf8mb4
が設定できています
参考にしたサイト
- Compose file versions and upgrading
https://docs.docker.com/compose/compose-file/compose-versioning/ - MySQLの文字コードとCollation
https://qiita.com/tfunato/items/e48ad0a37b8244a788f6 - 寿司ビール問題① 初心者→中級者へのSTEP20/25
https://qiita.com/kamohicokamo/items/3cc05f63a90148525caf