1. 概要
今回はDocker上でMySQLを起動する内容になります。
対象としては開発を1年程やってて自分で最初から開発してみたい方になります。そのため細かい用語などの説明はしません。
2. Dockerのインストール
こちらを参考
3. 作業ディレクトリを作成
mkdir mysql-on-docker
cd mysql-on-docker
4. my.cnfを作成
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_bin
[client]
default-character-set = utf8mb4
5. .envを作成
ROOT_PASS=root
DB_NAME=test
DB_USER=user
DB_PASS=password
DB_PORT=3306
6. 初期データを作成
- init/00-init.sql
CREATE DATABASE IF NOT EXISTS test;
USE test;
CREATE TABLE sample (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, name TEXT);
INSERT INTO sample (name) VALUES ('name1'), ('name2'), ('name3');
7. docker-compose.ymlを作成
version: '3.8'
services:
mysql-server:
image: mysql:8.0
ports:
- ${DB_PORT}:3306
command: --default-authentication-plugin=mysql_native_password
volumes:
- ./my.cnf:/etc/mysql/conf.d/my.cnf
- ./init:/docker-entrypoint-initdb.d
env_file:
- .env
environment:
MYSQL_ROOT_PASSWORD: ${ROOT_PASS}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASS}
restart: always
tty: true
8. 起動
- 起動
- 「-d」は、バックグラウンド実行
docker-compose up -d
Creating network "mysql-on-docker_default" with the default driver
Creating mysql-on-docker_mysql-server_1 ... done
- プロセスを確認
docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------
mysql-on-docker_mysql-server_1 docker-entrypoint.sh --def ... Up 0.0.0.0:3306->3306/tcp, 33060/tcp
- 初期データを確認
docker-compose exec mysql-server mysql -hlocalhost -uuser -p test
mysql -hlocalhost -uuser -p test --protocol=tcp
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.31 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
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> SELECT * FROM sample;
+----+-------+
| id | name |
+----+-------+
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
+----+-------+
3 rows in set (0.00 sec)
mysql> \q
Bye
- シャットダウン
docker-compose down
Stopping mysql-on-docker_mysql-server_1 ... done
Removing mysql-on-docker_mysql-server_1 ... done
Removing network mysql-on-docker_default
9. ディレクトリの構造
.
├── .env
├── docker-compose.yml
├── init
│ └── 00-init.sql
└── my.cnf
1 directory, 4 files
10. 備考
今回はDocker上でMySQLを起動するシンプルな内容でした。
11. 参考
- MySQL :: MySQL 8.0 リファレンスマニュアル :: 2.5.6.1 Docker を使用した MySQL Server デプロイメントの基本ステップ
- mysql – Official Image | Docker Hub
- Docker Compose を使う — Docker-docs-ja 20.10 ドキュメント
投稿者プロフィール
-
開発好きなシステムエンジニアです。
卓球にハマってます。
最新の投稿
- 【AWS】2024年4月27日【AWS】Amazon DynamoDBを使ってみる(CLI-API)
- 【AWS】2024年4月25日【AWS】Amazon DynamoDBを使ってみる(Management Console)
- 【AWS】2024年4月22日【AWS】API Gatewayを使ってみる
- 【AWS】2024年4月18日【AWS】Lambdaを使ってみる