docker-composeでMariaDBを起動する

技術

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の実行も行う環境を構築できます。

コメント

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