80 lines
2.8 KiB
Bash
80 lines
2.8 KiB
Bash
# .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"
|
|
}
|