db 'postgres:alpine',
port: 5432,
data_dir: '/var/lib/postgresql/data',
params: '-e POSTGRES_PASSWORD=example',
waitscript_params: "
-e PG_HOST=<%= db_container_name %>
-e PG_USER=postgres
-e PGPASSWORD=example
-e PG_DATABASE=postgres",
waitscript: <<~SCRIPT
#!/bin/sh
RETRIES=5
until psql -h $PG_HOST -U $PG_USER -d $PG_DATABASE -c "select 1" > /dev/null 2>&1 || [ $RETRIES -eq 0 ]; do
echo "Waiting for postgres server, $((RETRIES--)) remaining attempts..."
sleep 1
done
SCRIPT
This is nice and general and suitable for a large family of databases that are in practical use today.
But need to make this easier for well-known databases, or make something like a Kaiser plugin repository where kaiser can simply retrieve them.
database :postgres, image: 'postgres:alpine'
database :mysql, image: 'mysql:5.6', commands: <<~CMD
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--innodb-large-prefix
--innodb-file-format=barracuda
CMD
database :mysql, env: {
MYSQL_ROOT_PASSWORD: 'qwerty'
}