docker postgres /docker-entrypoint-initdb.d Тире в имени базы и/или имени пользователя. Как настроить

Для поддержки тире в имени пользователя и БД, просто берем их в двойные кавычки.

Скрипт для /docker-entrypoint-initdb.d можно выглядеть напр. так (с поддержкой создания нескольких БД):

#!/bin/bash

set -e
set -u

function create_user_and_database() {
	local database=$1
	echo "  Creating user and database '$database'"
	psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
	    CREATE USER "$database";
	    CREATE DATABASE "$database";
	    GRANT ALL PRIVILEGES ON DATABASE "$database" TO "$database";
EOSQL
}

if [ -n "$POSTGRES_MULTIPLE_DATABASES" ]; then
	echo "Multiple database creation requested: $POSTGRES_MULTIPLE_DATABASES"
	for db in $(echo $POSTGRES_MULTIPLE_DATABASES | tr ',' ' '); do
		create_user_and_database $db
	done
	echo "Multiple databases created"
fi

Уточним -- если ваш docker-compose сконфигурирован как-то так:

 db:
    image: postgres:12.2
    container_name: ktu-auth_db
    volumes:
     - './config/postgresql:/docker-entrypoint-initdb.d'
    environment:
      POSTGRES_USER: ktu-auth_user
      POSTGRES_PASSWORD: ktu-auth_password
      POSTGRES_MULTIPLE_DATABASES: ktu-auth_db,ktu-auth_db_test
    ports:
      - 19735:5432

то, скрипт создания баз должен лежать в папке ./config/postgresql относительно docker-compose.yml в файле с именем, напр. init-multiple-bases-postgre.sh

Key Words for FKN + antitotal forum (CS VSU):