DockerでMySQLとphpAdminのコンテナを作るやり方 | docker-composeの書き方

Docker プログラミング

DockerでMySQLとphpAdminのコンテナの作り方を一緒に学びます。

今回は、docker-composeを使って作成します。

必要なもの

dockerのインストール

ディレクトリ構成

docker/
   ├ mysql/
   │   ├ conf/  # mysqlの設定ファイル
   │   │   └ my.cnf
   │   └ init/  # 初期データ投入sql 
   │       └ init.sql
   └ docker-compose.yml

Docker composeの書き方

今回は、公式のMySQLとphpAdminのイメージを使います。

MySQLのバージョンは、5.7を使用します。

以下、docker-compose.ymlです。

version: '3'

services:
  # MySQL
  db:
    image: mysql:5.7
    container_name: mysql_test
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: sample
      MYSQL_USER: rebelapp
      MYSQL_PASSWORD: rebelapp
      TZ: 'Asia/Tokyo'
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
    - ./mysql/data:/var/lib/mysql
    - ./mysql/conf:/etc/mysql/conf.d
    - ./mysql/init:/docker-entrypoint-initdb.d
    ports:
    - 3306:3306

  # phpMyAdmin
  phpmyadmin:
    container_name: phpmyadmin_test
    image: phpmyadmin/phpmyadmin
    environment:
    - PMA_ARBITRARY=1
    - PMA_HOSTS=mysql_test
    - PMA_USER=root
    - PMA_PASSWORD=root
    ports:
    - 8081:80

書き方のポイント

MySQLのイメージ
・MySQLのイメージを5.7を使用
・コンテナ名は、任意の名前で可!
・environmentには、mysqlのユーザー名、パスワード、DBの名前を設定
・commandには、mysqlの立ち上げと文字コードを設定
・volumeには、data/配下に永続化のためのデータ、conf/配下に設定ファイル、init/配下に初期化のSQLファイルをマウントする。
・portでポートフォワーディングを行う。

phpAdminのイメージ
・コンテナ名は、任意の名前で可!
・environmentには、mysqlの記載されたコンテナ名、user/passwordを設定
・portでポートフォワーディングを行う。

MySQLのファイルを設定

my.cnf

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4

ここには、文字コードの情報を書き込んでいます。

init.sql

(例)
-- create user
create table IF not exists `user`
(
 `id`               INT AUTO_INCREMENT PRIMARY KEY,
 `email`            VARCHAR(255) NOT NULL,
 `password`         VARCHAR(255) NOT NULL, 
 `created_at`       TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
 `updated_at`       TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上記は、あくまで一例ですが、このinit.sqlに初期テーブルの生成や初期データの投入するSQLをかけば読み込んでくれます。

しかし、コンテナ生成時しか読み込ないので、ご注意ください。

docker-composeでMySQLをビルド

それでは、docker-composeをビルドしましょう。

コマンドは、以下のコマンドです。

docker-compose up -d

これで、MySQLとphpAdminが立ち上がりました。

以下のURLにアクセスするとphpAdminにアクセスして、MySQLの中身を見ることができます。

http://localhost:8081

コンテナの起動・停止・確認

コンテナが立ち上がっているかを確認します。

以下のコマンドを入力しましょう。

docker ps

これで、dockerの立ち上がっているコンテナの一覧を見ることができます。

コンテナの停止は、以下のコマンドです。

docker stop <コンテナ名>

コンテナの起動は、以下のコマンドです。

docker start <コンテナ名>

これで、ローカル環境に自由にMySQLを使って開発をすることができます。

もう一つMySQLのコンテナを作りたいときは、ポートフォワーディングなどをして、うまくポートが被らないようにする必要があります。

人気記事 Springbootの環境構築から Hello worldまで on Mac

人気記事 DockerでMySQLとphpAdminのコンテナを作るやり方

人気記事 ITブラック企業の求人の見分け方!7つのポイント