mariadb 数据库

目录准备

mkdir -p /www/mariadb/data/mariadb

挂载初始化脚本

-- ./data/mysql_init/init.sql
CREATE DATABASE IF NOT EXISTS ghost_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS forgejo_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE IF NOT EXISTS kc_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 给用户授权(确保 ghost_user 可以访问这两个库)
GRANT ALL PRIVILEGES ON ghost_db.* TO 'ghost'@'%';
GRANT ALL PRIVILEGES ON forgejo_db.* TO 'ghost'@'%';

FLUSH PRIVILEGES;

docker-compose.yml - 官方

services:
  mariadb:
    image: mariadb:12.2.2-noble
    container_name: mariadb
    restart: unless-stopped
    environment:
      - MARIADB_ROOT_PASSWORD=your_strong_root_password
      - MARIADB_USER=ghost_user
      - MARIADB_PASSWORD=ghost_password
    volumes:
      - ./data/mariadb:/var/lib/mysql
      - ./data/mysql_init:/docker-entrypoint-initdb.d:ro
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    networks:
      - ghost_net
networks:
  ghost_net:
    external: true

docker-compose.yml - alpine-mariadb

services:
  mariadb:
    image: alpine-mariadb:11.4.9
    container_name: mariadb
    restart: unless-stopped
    environment:
      - MARIADB_ROOT_PASSWORD=your_strong_root_password
      - MARIADB_USER=ghost_user
      - MARIADB_PASSWORD=ghost_password
    volumes:
      - ./data/mariadb:/var/lib/mysql
    networks:
      - ghost_net
networks:
  ghost_net:
    external: true