Docker-ComposeでMariaDBを設定する方法
今回は、Docker Composeを使ってMariaDBとphpMyAdminをセットアップし、初期SQL実行と設定ファイルの指定もできる環境構築手順を解説します。Ubuntu環境を想定し、Dockerバージョンは27.3.1、Docker Composeバージョンはv2.29.7を使用します。
環境
- Ubuntu 24.10
- Docker 27.3.1
- Docker Compose v2.29.7
1.必要なディレクトリとファイルを作成
mkdir -p mariadb/initsql mariadb/conf.d
touch docker-compose.yml .env
mariadb/initsql
ディレクトリには、初期化に使用するSQLファイル(例: init.sql
)を配置し、mariadb/conf.d
にはMariaDBの設定ファイルを追加できます。
2. .envファイルの設定
プロジェクトのルートにある .env
ファイルに以下の内容を記述し、設定をまとめて管理できるようにします。
# MariaDB Settings
MARIADB_DATABASE=defaultdb
MARIADB_USER=dbuser
MARIADB_PASSWORD=dbpass
MARIADB_ROOT_PASSWORD=rootpass
MARIADB_INIT_SQL=./mariadb/initsql
MARIADB_CONF_DIR=./mariadb/conf.d
MARIADB_PORT=3306
# phpMyAdmin Settings
PHP_MY_ADMIN_PORT=8082
# Time Zone
TZ=Asia/Tokyo
3. docker-compose.ymlファイルの内容
.env
ファイルで指定した環境変数を使い、以下の内容でdocker-compose.yml
ファイルを作成します。
version: '3.1'
services:
# DB コンテナ
mariadb:
image: mariadb:11.2.5-jammy
ports:
- "${MARIADB_PORT}:3306"
environment:
MARIADB_DATABASE: ${MARIADB_DATABASE}
MARIADB_USER: ${MARIADB_USER}
MARIADB_PASSWORD: ${MARIADB_PASSWORD}
MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD}
TZ: ${TZ}
volumes:
- ${MARIADB_INIT_SQL}:/docker-entrypoint-initdb.d
- ${MARIADB_CONF_DIR}:/etc/mysql/conf.d
- db-volume:/var/lib/mysql
# phpMyAdmin コンテナ
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
depends_on:
- mariadb
environment:
PMA_HOST: mariadb
PMA_PORT: ${MARIADB_PORT}
PMA_USER: ${MARIADB_USER}
PMA_PASSWORD: ${MARIADB_PASSWORD}
ports:
- "${PHP_MY_ADMIN_PORT}:80"
restart: always
# ボリューム設定(永続化のため)
volumes:
db-volume:
name: mariadb-data
driver: local
- mariadbサービス: MariaDBのイメージを使用し、
docker-entrypoint-initdb.d
フォルダに初期SQLファイルを指定。MariaDBの設定は環境変数を通して行います。 - phpmyadminサービス: phpMyAdminをMariaDBと連携して稼働させ、
PMA_HOST
に「mariadb」サービス名を指定。phpMyAdminにアクセスするためのポートは${PHP_MY_ADMIN_PORT}
で指定します。 - ボリューム設定: MariaDBのデータを永続化するために、ローカルボリューム「
db-volume
」を利用します。
4. 初期SQLの配置
MariaDBコンテナが初回起動時にSQLファイルを実行するには、mariadb/initsql
フォルダに任意のSQLファイル(例: init.sql
)を作成します。
例: mariadb/initsql/init.sql
CREATE TABLE IF NOT EXISTS test_table (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL
);
5. Docker Composeでコンテナを起動
ターミナルで以下のコマンドを実行し、MariaDBとphpMyAdminのコンテナを立ち上げます。
docker-compose up -d
-d
オプションを付けることで、コンテナはバックグラウンドで起動します。
6. 起動確認
以下のコマンドでコンテナが正常に起動していることを確認できます。
docker ps
7. phpMyAdminにアクセス
ブラウザで次のURLにアクセスし、phpMyAdminからMariaDBのデータベースに接続できます。
http://localhost:8082
8. 初期化SQLが実行されない場合の対処
初期SQLが実行されない場合、ボリュームが以前のデータを保持している可能性があります。この場合、次のコマンドでボリュームを削除し、初期化をやり直します。
docker-compose down -v
docker-compose up -d
まとめ
以上の手順で、Docker Composeを使用してMariaDBとphpMyAdminをセットアップし、初期SQLの実行も行う環境を構築できます。
コメント