Dockerを使ってMySQLをローカルで動かす方法

スポンサーリンク
Dockerを使ってMySQLをローカルで動かす方法 ノウハウ
Dockerを使ってMySQLをローカルで動かす方法
この記事は約7分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、M1 Mac 上の docker で MySQL 環境を構築したときの内容をご紹介します。構築したMySQLのバージョンは、5.7 になります。

スポンサーリンク

実行環境

この記事で使用されているコマンドは下記の環境で実行されています。

% sw_vers 
ProductName:            macOS
ProductVersion:         13.2.1
BuildVersion:           22D68

% sysctl machdep.cpu.brand_string
machdep.cpu.brand_string: Apple M1 Max

% docker --version
Docker version 20.10.23, build 7155243

使用している docker desktop のバージョンは下図になります。

docker desktop のバージョン
docker desktop のバージョン

docker を使用したMySQL5.7のインストール

下記のDocker関連のファイルを使用しています。

Dockerイメージには、mysql:5.7 を利用しています。

ディレクトリ構造

各種ファイルの配置は下記のようになっています。

db
├── .env
├── .tool-versions
├── Dockerfile
└── docker-compose.yml

.env

MySQLの環境変数が記載されているファイルになります。

MYSQL_DATABASE=sample
MYSQL_USER=user
MYSQL_PASSWORD=pass
MYSQL_ROOT_PASSWORD=P@ssw0rd
TZ=Asia/Tokyo

DockerでMySQLをインストールする際に、.envファイルを使用することで、MySQLのコンテナを実行する際に必要な様々な設定情報を簡単に管理することができます。

例えば、MySQLのルートユーザーのパスワードやデータベース名、ポート番号、MySQLのバージョンなどの設定を、.envファイルに定義することができます。そして、docker-compose.ymlファイル内で.envファイルに定義された変数を参照することで、MySQLのコンテナを構成することができます。

このように、.envファイルを使用することで、MySQLのコンテナを構成するための設定情報を一元管理することができます。また、.envファイルを使用することで、設定情報の変更に対して柔軟に対応することができます。例えば、MySQLのポート番号を変更する場合は、.envファイル内の変数を更新するだけで、コンテナの設定を変更することができます。

さらに、.envファイルを使用することで、機密情報を含む設定情報をソースコードに直接書き込むことを避けることができます。.envファイルは、機密情報を含む設定情報を環境変数として設定するため、ソースコード内に直接機密情報を書き込む必要がありません。これにより、機密情報の漏洩や誤って公開するリスクを低減することができます。

.tool-versions

.tool-versionsファイルは、asdfで管理するプログラムのバージョンを指定するためのファイルです。asdfは、複数のバージョンのプログラムを管理するためのツールです。例えば、Node.js、Ruby、Python、Javaなどのプログラミング言語のバージョンを管理することができます。

今回は、mysqlクライアントが使用したかったので下記のmysqlバージョンを記載しています。

mysql 5.7.31

補足ですが、.tool-versionsファイルはプロジェクトごとに作成することができます。プロジェクトごとに異なるバージョンのプログラムを使用する場合は、プロジェクトのルートディレクトリに.tool-versionsファイルを配置し、必要なバージョンを指定することができます。このようにすることで、プロジェクトごとに必要なプログラムのバージョンを管理することができます。

Dockerfile

FROM mysql:5.7

docker-compose.yml

version: '3'

services:
  mysql:
    build: .
    container_name: mysql
    platform: linux/x86_64
    ports:
      - 127.0.0.1:3306:3306
    environment:
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      TZ: ${TZ}

ビルド&起動

cd db
docker compose build
docker compose up -d

動作確認

ターミナルでmysqlコマンドで接続できれば、インストール成功です。

% mysql -u root -p -h 127.0.0.1 -P 3306 --protocol=tcp 
Enter password: (.envのMYSQL_PASSWORDの値を入力)
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.41 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

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> 

MySQLとは

MySQLは、オープンソースのリレーショナルデータベース管理システム(RDBMS)で、Webアプリケーションやサーバーで広く使用されています。MySQLは、高い拡張性、信頼性、パフォーマンスを持ち、多くのプログラム言語やプラットフォームでサポートされています。

以下は、MySQLの主な特徴です。

  • リレーショナルデータベース:MySQLは、リレーショナルデータベースとして設計されており、複数のテーブルを使用してデータを構造化することができます。
  • オープンソース:MySQLは、オープンソースのソフトウェアであり、誰でも自由に使用、改変、再配布することができます。
  • 高い拡張性:MySQLは、大規模なデータベースを扱うことができます。また、複数のサーバーを組み合わせたクラスター構成も可能です。
  • 高いパフォーマンス:MySQLは、高速なデータ処理を行うことができ、高負荷のWebサイトやアプリケーションでも安定して動作します。
  • 多言語対応:MySQLは、多くのプログラム言語やプラットフォームでサポートされています。また、多言語データを格納することもできます。
  • 様々なストレージエンジン:MySQLには、InnoDB、MyISAM、MEMORY、CSVなど、複数のストレージエンジンがあり、用途に応じて選択することができます。
  • セキュリティ:MySQLは、パスワードの暗号化、アクセス制御、SSL/TLS接続など、高度なセキュリティ機能を備えています。

MySQLは、Webアプリケーションやサーバーのデータベースとして広く使用されており、多くの企業や組織で利用されています。MySQLの使い方や操作方法については、オンラインのドキュメントやチュートリアルが豊富にありますので、参考にしてみてください。

公式サイトは下記になります。

おわりに

今日は、MySQL5.7をインストールしました。次回は、データベースの作成やテーブルの作成をしてみたいと思います。

よっしー
よっしー

また明日お会いしましょう!

コメント

タイトルとURLをコピーしました