degica / kaiser

Commandline Gem that allows you to work with web apps better
https://tech.degica.com/kaiser/
MIT License
12 stars 1 forks source link

Abstract away database settings #38

Open davidsiaw opened 4 years ago

davidsiaw commented 4 years ago

Current kaiserfiles have huge amounts of code to define how to database:


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.

Something like

database :postgres

And if you want to specify an image

database :postgres, image: 'postgres:alpine'

If you want to add additional params (ala KOMOJU)

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

And maybe some well known params for the database:

database :mysql, env: {
  MYSQL_ROOT_PASSWORD: 'qwerty'
}