v0.0.0
This commit is contained in:
11
.env.example
Normal file
11
.env.example
Normal file
@@ -0,0 +1,11 @@
|
||||
MariaDB__MYSQL_ROOT_PASSWORD=MyRootPass
|
||||
MariaDB__MYSQL_DATABASE=gitea
|
||||
MariaDB__MYSQL_USER=gitea
|
||||
MariaDB__MYSQL_PASSWORD=MyPass
|
||||
MariaDB__CLUSTER_NAME=mariadb_cluster
|
||||
MariaDB__CLUSTER_ADDRESS=gcomm://192.168.1.101,192.168.1.102,192.168.1.103
|
||||
MariaDB__NODE_NAME=SVR01
|
||||
MariaDB__NODE_ADDRESS=192.168.1.101
|
||||
|
||||
# 初次啟動 Bootstrap
|
||||
MariaDB__BOOTSTRAP=false
|
||||
15
.gitattributes
vendored
Normal file
15
.gitattributes
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
# 所有 Shell 腳本用 LF
|
||||
*.sh text eol=lf
|
||||
|
||||
# Docker 設定與腳本
|
||||
Dockerfile text eol=lf
|
||||
*.yaml text eol=lf
|
||||
*.yml text eol=lf
|
||||
|
||||
# Laravel & PHP 設定檔
|
||||
*.conf text eol=lf
|
||||
*.ini text eol=lf
|
||||
.env* text eol=lf
|
||||
|
||||
# 其他你專案內的自定義目錄內腳本
|
||||
docker/** text eol=lf
|
||||
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
data
|
||||
*.cnf
|
||||
.env
|
||||
10
Dockerfile
Normal file
10
Dockerfile
Normal file
@@ -0,0 +1,10 @@
|
||||
FROM mariadb:latest
|
||||
|
||||
RUN apt-get update && apt-get install -y gettext-base netcat-openbsd && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY conf.d/galera.cnf.template /etc/mysql/conf.d/galera.cnf.template
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
CMD ["mariadbd"]
|
||||
20
conf.d/galera.cnf.template
Normal file
20
conf.d/galera.cnf.template
Normal file
@@ -0,0 +1,20 @@
|
||||
[mysqld]
|
||||
# 基本設定
|
||||
bind-address=0.0.0.0
|
||||
binlog_format=ROW
|
||||
default_storage_engine=InnoDB
|
||||
innodb_autoinc_lock_mode=2
|
||||
innodb_flush_log_at_trx_commit=0
|
||||
query_cache_size=0
|
||||
query_cache_type=0
|
||||
|
||||
# Galera Cluster
|
||||
wsrep_on=ON
|
||||
wsrep_provider=/usr/lib/galera/libgalera_smm.so
|
||||
wsrep_node_name="${MariaDB__NODE_NAME}"
|
||||
wsrep_node_address="${MariaDB__NODE_ADDRESS}"
|
||||
wsrep_cluster_name="${MariaDB__CLUSTER_NAME}"
|
||||
wsrep_cluster_address="${MariaDB__CLUSTER_ADDRESS}"
|
||||
|
||||
# SST (State Snapshot Transfer)
|
||||
wsrep_sst_method=rsync
|
||||
32
docker-compose.yml
Normal file
32
docker-compose.yml
Normal file
@@ -0,0 +1,32 @@
|
||||
services:
|
||||
mariadb:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: ${MariaDB__NODE_NAME}
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MARIADB_ROOT_PASSWORD: ${MariaDB__MYSQL_ROOT_PASSWORD}
|
||||
MARIADB_DATABASE: ${MariaDB__MYSQL_DATABASE}
|
||||
MARIADB_USER: ${MariaDB__MYSQL_USER}
|
||||
MARIADB_PASSWORD: ${MariaDB__MYSQL_PASSWORD}
|
||||
MariaDB__BOOTSTRAP: ${MariaDB__BOOTSTRAP}
|
||||
MariaDB__NODE_NAME: ${MariaDB__NODE_NAME}
|
||||
MariaDB__NODE_ADDRESS: ${MariaDB__NODE_ADDRESS}
|
||||
MariaDB__CLUSTER_NAME: ${MariaDB__CLUSTER_NAME}
|
||||
MariaDB__CLUSTER_ADDRESS: ${MariaDB__CLUSTER_ADDRESS}
|
||||
volumes:
|
||||
- ./data:/var/lib/mysql
|
||||
- ./conf.d:/etc/mysql/conf.d
|
||||
ports:
|
||||
- "3306:3306"
|
||||
- "4567:4567"
|
||||
- "4567:4567/udp"
|
||||
- "4568:4568"
|
||||
- "4444:4444"
|
||||
networks:
|
||||
default:
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: mariadb_net
|
||||
14
entrypoint.sh
Normal file
14
entrypoint.sh
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# 生成最終的 galera.cnf
|
||||
# 只替換指定變數
|
||||
envsubst '${MariaDB__NODE_NAME} ${MariaDB__NODE_ADDRESS} ${MariaDB__CLUSTER_NAME} ${MariaDB__CLUSTER_ADDRESS}' \
|
||||
< /etc/mysql/conf.d/galera.cnf.template > /etc/mysql/conf.d/galera.cnf
|
||||
|
||||
if [ "${MariaDB__BOOTSTRAP}" = "true" ]; then
|
||||
echo "[INFO] Bootstrapping Galera cluster..."
|
||||
exec docker-entrypoint.sh mariadbd --wsrep-new-cluster
|
||||
else
|
||||
exec docker-entrypoint.sh "$@"
|
||||
fi
|
||||
Reference in New Issue
Block a user