dx/dxkit/modules/docker/db.module.sh

69 lines
No EOL
1.5 KiB
Bash

#!/usr/bin/env bash
# ============================================
# Engine config
# ============================================
MYSQL_INTERNAL_PORT=3306
MSSQL_INTERNAL_PORT=1433
function docker::db::internal_port() {
case "$DB_ENGINE" in
mysql) echo $MYSQL_INTERNAL_PORT ;;
mssql) echo $MSSQL_INTERNAL_PORT ;;
esac
}
function docker::db::external_port() {
# If already resolved to a plain number, use it
if [[ -n "$DB_PORT" && "$DB_PORT" != "auto" ]]; then
echo "$DB_PORT"
return
fi
# Otherwise resolve from internal port as base
network::ports::resolve "auto:$(docker::db::internal_port)"
}
function docker::db::internal_path() {
case "$DB_ENGINE" in
mysql) echo "/var/lib/mysql" ;;
mssql) echo "/var/opt/mssql/data" ;;
esac
}
function docker::db::external_path() { ctx::artifact::path database; }
function docker::db::_mysql_vars() {
cat << EOF
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_DATABASE: "${DB_NAME}"
MYSQL_USER: "${DB_USER}"
MYSQL_PASSWORD: "${DB_PASS}"
EOF
}
function docker::db::_mssql_vars() {
cat << EOF
SA_PASSWORD: ${DB_PASS}
ACCEPT_EULA: 'Y'
EOF
}
# ============================================
# Generation
# ============================================
function docker::db::environment() {
case "$DB_ENGINE" in
mysql) docker::db::_mysql_vars ;;
mssql) docker::db::_mssql_vars ;;
esac
}
# ============================================
# Load
# ============================================
#function docker::db::on_load() {
#
#}