Loading
  • LIGHT

  • DARK

ROUTE

ルートゼロの
アクティビティ

【Docker入門】MySQL環境を手軽に構築する方法を徹底解説

3

こんにちは!今回は、Dockerを使ってMySQLの環境をサクッと作る方法を詳しく解説します。初心者の方でも簡単に取り組めるように、手順を丁寧に説明しつつ、実践的な設定例もご紹介します!

事前に用意するもの

  1. DockerとDocker Compose

  2. テキストエディタ

    • docker-compose.ymlを作成・編集するために必要です。おすすめは以下のいずれか。

    • Visual Studio Code

    • メモ帳(Windows)/テキストエディット(Mac)

設定ファイルの例

以下は、MySQL環境を構築するための更新済みdocker-compose.ymlファイルです。この設定では、MySQL 5.7を使用し、データベース名をsampleに変更しています。

docker-compose.yml

version: '3.8'
  
  services:
    sample:
      image: mysql:5.7
      container_name: sample
      volumes:
        - db_data:/var/lib/mysql
      restart: always
  
      environment:
        MYSQL_ROOT_PASSWORD: {ルートパスワード}
        MYSQL_DATABASE: sample
        MYSQL_USER: {ログインユーザID}
        MYSQL_PASSWORD: {パスワード}
        TZ: "Asia/Tokyo"
      ports:
        - "3307:3306"
  
      networks:
        - db-network
  
  volumes:
    db_data:
      driver: local
  
  networks:
    db-network:
      external: true
  

各項目の解説

version

  • 3.8: Docker Composeファイルのバージョンを指定します。最新の機能を利用可能。

services

  • サービス(コンテナ)を定義します。ここではsampleというMySQLサービスを構築。

image

  • 使用するDockerイメージを指定します。

  • mysql:5.7: MySQLのバージョン5.7を利用。

container_name

  • コンテナの名前をsampleに設定します。

  • コンテナ名を明示することで、操作時に指定しやすくなります。

volumes

  • データを永続化するための設定。

  • db_data: ホスト側の保存領域を指定。

  • /var/lib/mysql: コンテナ内でMySQLがデータを保存するディレクトリ。

restart

  • 再起動ポリシーを指定。

  • always: コンテナが停止した場合やホストマシン再起動時に自動再起動。

environment

  • MySQLの初期設定を環境変数で定義。

  • MYSQL_ROOT_PASSWORD: MySQLのrootユーザーのパスワード。

  • MYSQL_DATABASE: 起動時に作成されるデータベースの名前。

  • MYSQL_USER: アプリケーション用の専用ユーザー。

  • MYSQL_PASSWORD: 上記ユーザーのパスワード。

  • TZ: コンテナのタイムゾーン(日本時間を設定)。

ports

  • ホストとコンテナのポートをマッピング。

  • 3307:3306: ホスト側のポート3307をコンテナ内の3306(MySQLのデフォルトポート)に接続。

networks

  • コンテナが接続するネットワークを指定。

  • db-network: 外部ネットワークを利用して他のサービスと連携可能。

  • external: true: 事前に作成したネットワークを使用(後述のコマンドで作成)。

volumes

  • データの保存領域を指定。

  • db_data: MySQLのデータを永続化。

  • driver: local: ホストのローカルストレージを利用。

実行手順

1 . 設定ファイルを保存
上記の内容をdocker-compose.ymlという名前で保存します。
2 . ネットワークを作成
外部ネットワークdb-networkを作成します。以下のコマンドを実行してください(初回のみ必要です)。

docker network create db-network

3 . コンテナを起動
設定したdocker-compose.ymlを使ってコンテナを起動します。

docker-compose up -d

4 . コンテナの状態を確認
以下のコマンドを実行して、コンテナが正常に起動しているか確認します。

docker ps

実行結果にsampleコンテナが表示されれば成功です。

Dockerコンテナ内にログインしてMySQLを操作する手順

1. コンテナ内にログイン

まず、起動中のコンテナを確認します。以下のコマンドを実行してください。

docker ps

実行結果の例:

% docker ps                       
  CONTAINER ID   IMAGE       COMMAND   CREATED          STATUS          PORTS                               NAMES
  XXXXXXXXXXXX   mysql:5.7   XXXXXXX   XX minutes ago   Up XX minutes   33060/tcp, 0.0.0.0:3307->3306/tcp   sample

上記のNAMES列に記載されたコンテナ名(この場合はsample)を確認します。

次に、以下のコマンドを実行して、該当するMySQLコンテナ内にログインします。

docker exec -it sample bash

sampleはコンテナ名です。docker psで確認したNAMES列に表示されている名前を使用してください。

2. MySQLクライアントにログイン

コンテナ内でMySQLクライアントを起動します。

mysql -u {ログインユーザID} -p
  • パスワード: {パスワード}(MYSQL_PASSWORDで設定した値を入力)。

3. データベースを確認

MySQLにログインしたら、以下のコマンドでデータベース一覧を確認できます。

SHOW DATABASES;
mysql> show databases;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | sample             | 
  +--------------------+

まとめ

docker-compose.ymlを保存し、必要なコマンドを順番に実行するだけで簡単にMySQL環境をセットアップできます。DockerとDocker
Composeを活用すれば、短時間で効率的にMySQL環境を構築できます。本記事の手順を実行するだけで、以下のことが簡単に実現可能です。

  1. MySQLのインストールや設定の手間を削減
    手動でソフトウェアをインストールする必要がなく、コンテナを利用することで簡単に環境を再現できます。

  2. 永続化されたデータストレージの利用
    Dockerのボリューム機能を活用して、データを永続的に保存できます。

  3. カスタマイズの容易さ
    docker-compose.ymlを変更するだけで、バージョンや環境設定を柔軟に変更できます。

次に試すべきこと

  • アプリケーション連携
    作成したMySQL環境を、PHPやNode.jsなどのアプリケーションと連携させてみましょう。

  • MySQL WorkbenchやGUIツールの利用
    MySQL Workbenchなどのツールを使用して、GUIでデータベースを操作するとさらに便利です。

  • Docker環境を複数構築
    他のサービス(例:Redis、Nginx)と一緒に環境を構築し、より実践的な開発環境を整えてみましょう。


これらの手順を活用し、効率的な開発環境の構築をお楽しみください!ぜひ手を動かして試してみてくださいね!最後までお読みいただき、ありがとうございました!

3

もっとルートゼロを知りたいなら

DISCOVER MORE