こんにちは。よっしーです(^^)
今日は、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 を使用した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をインストールしました。次回は、データベースの作成やテーブルの作成をしてみたいと思います。
また明日お会いしましょう!
コメント