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
default-time-zone = 'Asia/Tokyo'
[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. 起動
- OLD
- docker-compose
- NEW
- docker compose
コマンド
- 起動
- 「-d」は、バックグラウンド実行
docker-compose up -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
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
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
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 ドキュメント
投稿者プロフィール

-
開発好きなシステムエンジニアです。
卓球にハマってます。
最新の投稿
【Next.js】2025年2月9日【NextJS】View and Download PDF
【AWS】2025年2月1日【AWS】Github ActionsやAWS SAMを使ってAWS S3・CloudFrontにウェブコンテンツをデプロイし、サブドメインにアクセスできるようにする
【AWS】2025年1月25日【AWS】Deploy Serverless NextJS app with AWS Lambda Web Adapter using AWS SAM
【Next.js】2025年1月16日【NextJS】Access nextjs app launched on WSL2 from an external terminal