【Docker】DockerでMySQLを起動

Docker

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. 参考

投稿者プロフィール

Sondon
開発好きなシステムエンジニアです。
卓球にハマってます。

関連記事

  1. Docker

    WSL2上のUbuntuの中でDockerを動かすには?

  2. 【Docker】初めてのDocker#3(docker-compose…

  3. 【Docker】初めてのDocker#1(環境構築)

  4. 【Docker】初めてのDocker#2(Hello World~コン…

最近の記事

  1. AWS
  2. AWS
  3. AWS
  4. AWS
  5. flutter

制作実績一覧

  1. Checkeys