the postiz backend image uses dotenv-cli to load /app/.env, which
doesn't exist when config is only passed via docker environment vars.
generate postiz.env from root .env and mount it read-only. also handle
edge case where docker creates the file as a directory on bind mount
failure, and quote values to prevent dotenv-cli misparses.
- fix credentials counter bug caused by posix sh subshell behavior
- add trap for temp file cleanup on exit
- make import_workflows.sh executable
- add explanatory comments in restart.sh for down/up logic
- extract sleep value to EXTERNAL_SERVICE_INIT_DELAY constant
docker compose resolves relative paths from the first compose file's
directory. when multiple compose files are combined, supabase's
./volumes/logs/vector.yml path resolves from project root instead of
supabase/docker/, causing vector container to fail with "is a directory"
error. this matches the behavior of start_services.py.
add build_compose_files_array() and getter functions for n8n-workers,
supabase, dify compose files in utils.sh. simplifies restart.sh and
apply_update.sh by using shared function. now checks both profile
activation AND file existence before including external compose files.