Выполнять скрипты в docker-entrypoint-initdb.d на --force-reconate

Я очень хорошо разбираюсь в docker-compose --force-recreateвариант. В конвейере CI/CD одного из моих проектов у меня есть следующая инструкция

docker-compose up -d --force-recreate

которые позволяют мне настраивать мою инфраструктуру, объединять после слияния. Я создал сценарий для анализа следующей переменной ENV VAR для создания БД:POSTGRES_DBS=some_user->${PASSWORD_1}|an_other_user->${PASSWORD_2}

if [ -n "$POSTGRES_DBS" ]; then
    IFS=\|
    for s in $POSTGRES_DBS ; do
        pass=$(echo "$s" | sed 's/.*->//');
        user=$(echo "$s" | sed 's/->.*//');
        db=$user"_db";

        psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
            CREATE USER $user WITH PASSWORD '$pass';
            CREATE DATABASE $db;
            REVOKE CONNECT ON DATABASE $db FROM PUBLIC;
            GRANT ALL PRIVILEGES ON DATABASE $db TO $user;
        EOSQL
    done
fi

Работает как шарм, но когда я пытался --force-recreate с POSTGRES_DBS=some_user->${PASSWORD_1}|an_other_user->${PASSWORD_1}|test->test, это не создало test пользователь или test_db. У меня есть чувство, что скрипты вdocker-entrypoint-initdb.d(postgres:12.1-alpine) запускаются только при первом создании экземпляра контейнера и не запускаются--force-recreate. Вы думаете об обходном пути?

0 ответов

Другие вопросы по тегам