initial
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
# .env.deploy generation. Renders templates/env/env.template (token
|
||||
# substitution) and appends conditional blocks for the chosen options.
|
||||
# The file is written with mode 600 and never echoed to stdout.
|
||||
|
||||
# render_template FILE — substitutes @KEY@ tokens from the RENDER assoc array.
|
||||
# Prints the result to stdout.
|
||||
render_template() {
|
||||
local file="$1" content key
|
||||
content="$(cat "$file")"
|
||||
for key in "${!RENDER[@]}"; do
|
||||
content="${content//@${key}@/${RENDER[$key]}}"
|
||||
done
|
||||
printf '%s\n' "$content"
|
||||
}
|
||||
|
||||
# build_database_url — sets CFG_DATABASE_URL from the collected DB config.
|
||||
build_database_url() {
|
||||
if [[ "$CFG_DB_MODE" == "embedded" ]]; then
|
||||
CFG_DATABASE_URL="postgresql+asyncpg://${CFG_DB_USER}:${CFG_DB_PASS}@db:5432/${CFG_DB_NAME}"
|
||||
else
|
||||
CFG_DATABASE_URL="postgresql+asyncpg://${CFG_DB_USER}:${CFG_DB_PASS}@${CFG_DB_HOST}:${CFG_DB_PORT}/${CFG_DB_NAME}"
|
||||
fi
|
||||
}
|
||||
|
||||
# generate_env — writes $ENV_FILE from template + conditional sections.
|
||||
generate_env() {
|
||||
build_database_url
|
||||
|
||||
declare -A RENDER=(
|
||||
[MCMA_IMAGE_TAG]="$CFG_TAG"
|
||||
[DATABASE_URL]="$CFG_DATABASE_URL"
|
||||
[REDIS_URL]="$CFG_REDIS_URL"
|
||||
[JWT_SECRET]="$CFG_JWT_SECRET"
|
||||
[MEDIA_HOST_PATH]="$CFG_MEDIA_HOST_PATH"
|
||||
[STORAGE_BACKEND]="$CFG_STORAGE"
|
||||
[PUBLIC_API_BASE_URL]="$CFG_PUBLIC_API_BASE_URL"
|
||||
[HTTP_PORT]="$CFG_HTTP_PORT"
|
||||
[API_PORT]="$CFG_API_PORT"
|
||||
[WEBUI_PORT]="$CFG_WEBUI_PORT"
|
||||
)
|
||||
|
||||
umask 077
|
||||
render_template "${BOOTSTRAP_DIR}/templates/env/env.template" >"$ENV_FILE"
|
||||
|
||||
# -- embedded Postgres credentials (needed by the db service) ---------
|
||||
if [[ "$CFG_DB_MODE" == "embedded" ]]; then
|
||||
{
|
||||
echo ""
|
||||
echo "# -- built-in Postgres --------------------------------------------------"
|
||||
echo "POSTGRES_USER=${CFG_DB_USER}"
|
||||
echo "POSTGRES_PASSWORD=${CFG_DB_PASS}"
|
||||
echo "POSTGRES_DB=${CFG_DB_NAME}"
|
||||
} >>"$ENV_FILE"
|
||||
fi
|
||||
|
||||
# -- S3 storage -------------------------------------------------------
|
||||
if [[ "$CFG_STORAGE" == "s3" ]]; then
|
||||
{
|
||||
echo ""
|
||||
echo "# -- S3 storage ---------------------------------------------------------"
|
||||
echo "S3_ENDPOINT_URL=${CFG_S3_ENDPOINT}"
|
||||
echo "S3_BUCKET=${CFG_S3_BUCKET}"
|
||||
echo "S3_REGION=${CFG_S3_REGION}"
|
||||
echo "S3_ACCESS_KEY=${CFG_S3_KEY}"
|
||||
echo "S3_SECRET_KEY=${CFG_S3_SECRET}"
|
||||
} >>"$ENV_FILE"
|
||||
fi
|
||||
|
||||
# -- optional ML service ----------------------------------------------
|
||||
if [[ -n "${CFG_ML_URL:-}" ]]; then
|
||||
{
|
||||
echo ""
|
||||
echo "# -- optional ML service ------------------------------------------------"
|
||||
echo "ML_SERVICE_URL=${CFG_ML_URL}"
|
||||
} >>"$ENV_FILE"
|
||||
fi
|
||||
|
||||
chmod 600 "$ENV_FILE"
|
||||
}
|
||||
Reference in New Issue
Block a user