Hi Adrian,
I see nowhere in your init-master.sh where Postgres is restarted.
Yes, you're right. The base image takes care of that –– the base image of mdillon/postgis is postgres:9.3. See here, for instance:
When the startup command –– CMD in Docker lingo –– is "postgres" it does a bunch of initialization operations, and then runs the user procided scripts in the /docker-entrypoint-initdb.d directory.
Then finally it starts up the postgres process with gosu postgres "$@". The gosu is a wrapper that passes user commands to the end process, i.e. postgres, and I'm not sure what $@ is but I think it's to give the user a shell.