119 lines
4.8 KiB
Bash
119 lines
4.8 KiB
Bash
#!/bin/bash
|
||
# Ver: 1.2 by Endial Fang (endial@126.com)
|
||
#
|
||
# 应用环境变量定义及初始化
|
||
|
||
export ENV_DEBUG=${ENV_DEBUG:-false}
|
||
export ALLOW_ANONYMOUS="${ALLOW_ANONYMOUS:-no}"
|
||
|
||
# 通过读取变量名对应的 *_FILE 文件,获取变量值;如果对应文件存在,则通过传入参数设置的变量值会被文件中对应的值覆盖
|
||
# 变量优先级: *_FILE > 传入变量 > 默认值
|
||
app_env_file_lists=(
|
||
PG_POSTGRES_PASSWORD
|
||
PG_PASSWORD
|
||
PG_REPLICATION_PASSWORD
|
||
)
|
||
for env_var in "${app_env_file_lists[@]}"; do
|
||
file_env_var="${env_var}_FILE"
|
||
if [[ -n "${!file_env_var:-}" ]]; then
|
||
export "${env_var}=$(< "${!file_env_var}")"
|
||
unset "${file_env_var}"
|
||
fi
|
||
done
|
||
unset app_env_file_lists
|
||
|
||
# 应用路径参数(Dockerfile 已定义:APP_NAME、APP_VER,可能定义 APP_USER、APP_EXEC)
|
||
export APP_EXEC="${APP_EXEC:-${APP_NAME}}"
|
||
export APP_USER="${APP_USER:-${APP_NAME}}"
|
||
export APP_GROUP="${APP_USER:-${APP_NAME}}"
|
||
export APP_HOME="${APP_HOME:-/srv/${APP_NAME}}"
|
||
export APP_BASE="${APP_BASE:-/usr/local/${APP_NAME}}"
|
||
|
||
export APP_DEF_DIR="${APP_BASE}/etc/${APP_NAME}"
|
||
export APP_CONF_DIR="/srv/${APP_NAME}/conf"
|
||
export APP_DATA_DIR="/srv/${APP_NAME}/data"
|
||
export APP_CERT_DIR="/srv/${APP_NAME}/cert"
|
||
export APP_LOG_DIR="/srv/${APP_NAME}/log"
|
||
export APP_CACHE_DIR="/var/cache/${APP_NAME}"
|
||
export APP_RUN_DIR="/var/run/${APP_NAME}"
|
||
|
||
export PGDATA="${PGDATA:-${APP_DATA_DIR}}"
|
||
export TZ=${TZ:-"Asia/Shanghai"}
|
||
|
||
export PG_CONF_FILE="${PG_CONF_FILE:-${PGDATA}/postgresql.conf}"
|
||
export PG_PID_FILE="${PG_PID_FILE:-${PGDATA}/postmaster.pid}"
|
||
export PG_INIT_MAX_TIMEOUT=${PG_INIT_MAX_TIMEOUT:-60}
|
||
export PG_REPLICATION_MODE="${PG_REPLICATION_MODE:-primary}"
|
||
|
||
if [[ "${PG_REPLICATION_MODE}" == "primary" ]]; then
|
||
export PG_SYNCHRONOUS_REPLICAS_NUM="${PG_SYNCHRONOUS_REPLICAS_NUM:-0}"
|
||
export PG_SYNCHRONOUS_REPLICAS_METHOD="${PG_SYNCHRONOUS_REPLICAS_METHOD:-}"
|
||
export PG_SYNCHRONOUS_REPLICAS_NAMES="${PG_SYNCHRONOUS_REPLICAS_NAMES:-\*}"
|
||
|
||
export PG_CFG_MAX_WAL_SENDERS="${PG_CFG_MAX_WAL_SENDERS:-10}"
|
||
export PG_CFG_WAL_LEVEL="${PG_CFG_WAL_LEVEL:-logical}"
|
||
export PG_CFG_WAL_LOG_HINTS="${PG_CFG_WAL_LOG_HINTS:-on}"
|
||
|
||
elif [[ "${PG_REPLICATION_MODE}" == "standby" ]]; then
|
||
export PG_REPLICATION_APP_NAME=${PG_REPLICATION_APP_NAME:-cvcluster}
|
||
export PG_REPLICATION_HOST="${PG_REPLICATION_HOST:-}"
|
||
export PG_REPLICATION_PORT="${PG_REPLICATION_PORT:-5432}"
|
||
export PG_REPLICATION_USER="${PG_REPLICATION_USER:-}"
|
||
export PG_REPLICATION_PASSWORD="${PG_REPLICATION_PASSWORD:-}"
|
||
export PG_REPLICATION_CONNECT_TIMEOUT="${PG_REPLICATION_CONNECT_TIMEOUT:-10}"
|
||
|
||
# 配置允许从备机备份,参考:http://www.postgres.cn/docs/9.4/app-pgbasebackup.html
|
||
export PG_CFG_FULL_PAGE_WRITES="${PG_CFG_FULL_PAGE_WRITES:-on}"
|
||
export PG_CFG_HOT_STANDBY="${PG_CFG_HOT_STANDBY:-on}"
|
||
export PG_CFG_MAX_WAL_SENDERS="${PG_CFG_MAX_WAL_SENDERS:-16}"
|
||
fi
|
||
|
||
# 应用配置参数
|
||
|
||
export PG_ENABLE_LDAP="${PG_ENABLE_LDAP:-no}"
|
||
if [[ ${PG_ENABLE_LDAP} == yes ]]; then
|
||
export PG_LDAP_URL="${PG_LDAP_URL:-}"
|
||
|
||
export PG_LDAP_PREFIX="${PG_LDAP_PREFIX:-}"
|
||
export PG_LDAP_SUFFIX="${PG_LDAP_SUFFIX:-}"
|
||
export PG_LDAP_SERVER="${PG_LDAP_SERVER:-}"
|
||
export PG_LDAP_PORT="${PG_LDAP_PORT:-}"
|
||
export PG_LDAP_SCHEME="${PG_LDAP_SCHEME:-}"
|
||
export PG_LDAP_TLS="${PG_LDAP_TLS:-}"
|
||
export PG_LDAP_BASE_DN="${PG_LDAP_BASE_DN:-}"
|
||
export PG_LDAP_BIND_DN="${PG_LDAP_BIND_DN:-}"
|
||
export PG_LDAP_BIND_PASSWORD="${PG_LDAP_BIND_PASSWORD:-}"
|
||
export PG_LDAP_SEARCH_ATTR="${PG_LDAP_SEARCH_ATTR:-}"
|
||
export PG_LDAP_SEARCH_FILTER="${PG_LDAP_SEARCH_FILTER:-}"
|
||
fi
|
||
|
||
export PG_INITDB_ARGS="${PG_INITDB_ARGS:-}"
|
||
export PG_INITDB_WAL_DIR="${PG_INITDB_WAL_DIR:-${PGDATA}/pg_wal}"
|
||
export PG_USER_CONNECTION_LIMIT="${PG_USER_CONNECTION_LIMIT:-}"
|
||
export PG_DB_CONNECTION_LIMIT="${PG_DB_CONNECTION_LIMIT:-}"
|
||
export PG_USER_IP4_RANGE="${PG_IP4_RANGE:-0.0.0.0/0}"
|
||
export PG_USER_IP6_RANGE="${PG_IP6_RANGE:-::0/0}"
|
||
export PG_REPLICATION_IP4_RANGE="${PG_REPLICATION_IP4_RANGE:-${PG_USER_IP4_RANGE}}"
|
||
export PG_REPLICATION_IP6_RANGE="${PG_REPLICATION_IP6_RANGE:-${PG_USER_IP6_RANGE}}"
|
||
|
||
export PG_USERNAME="${PG_USERNAME:-postgres}"
|
||
export PG_PASSWORD="${PG_PASSWORD:-}"
|
||
export PG_DATABASE="${PG_DATABASE:-postgres}"
|
||
export PG_POSTGRES_PASSWORD="${PG_POSTGRES_PASSWORD:-}"
|
||
|
||
# 使用自定义用户名(非"postgres")时的管理员密码
|
||
[[ "${PG_USERNAME}" == "postgres" ]] && export PG_POSTGRES_PASSWORD="${PG_PASSWORD}"
|
||
|
||
# 用来执行初始化数据库命令的用户名及密码
|
||
export PG_INITSCRIPTS_USERNAME="${PG_INITSCRIPTS_USERNAME:-${PG_USERNAME}}"
|
||
export PG_INITSCRIPTS_PASSWORD="${PG_INITSCRIPTS_PASSWORD:-${PG_PASSWORD}}"
|
||
|
||
# 内部变量
|
||
|
||
# 个性化变量
|
||
export PG_CFG_DATA_DIRECTORY="${PGDATA}"
|
||
export PG_CFG_HBA_FILE="${PGDATA}/pg_hba.conf"
|
||
export PG_CFG_IDENT_FILE="${PGDATA}/pg_ident.conf"
|
||
export PG_CFG_EXTERNAL_PID_FILE="${APP_RUN_DIR}/postgresql.pid"
|
||
export PG_CFG_LOG_DIRECTORY="${APP_LOG_DIR}"
|