diff --git a/docker-compose.yml b/docker-compose.yml index e0ab162..ecb61a0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,15 +2,15 @@ version: "3.4" services: postgres: container_name: postgres - image: postgres:13.4 + image: postgres:${POSTGRES_VERSION:-latest} restart: unless-stopped ports: - - :5432:5432 + - ${POSTGRES_HOST_IP_ADDRESS:-127.0.0.1}:${POSTGRES_HOST_PORT:-5432}:5432 volumes: - pgdata:/var/lib/postgresql/data environment: - POSTGRES_USER: - POSTGRES_PASSWORD: + POSTGRES_USER: ${POSTGRES_ADMIN_USER:-sysadmin} + POSTGRES_PASSWORD: ${POSTGRES_ADMIN_PASSWORD:-password} volumes: pgdata: diff --git a/setup b/setup new file mode 100755 index 0000000..6c17bd7 --- /dev/null +++ b/setup @@ -0,0 +1,52 @@ +#!/bin/bash + +echo '####################################################################' +echo '# docker_postgres_setup_script #' +echo '# Dennis Buchhorn - bucde@b-eit.de #' +echo '####################################################################' +echo '' + +POSTGRES_VERSION='' +POSTGRES_HOST_IP_ADDRESS='' +POSTGRES_HOST_PORT='' +POSTGRES_ADMIN_USER='' +POSTGRES_ADMIN_PASSWORD='' + +POSTGRES_SHARED_HOSTING='y' + +read -p 'Enter postgres version which should be used: ' POSTGRES_VERSION +read -p 'Enter host (vm) ip address on which postgres should be accessible: ' POSTGRES_HOST_IP_ADDRESS +read -p 'Enter host (vm) port on which postgres should be accessible: ' POSTGRES_HOST_PORT +read -p 'Enter admin user name for postgres: ' POSTGRES_ADMIN_USER +read -p 'Enter admin password for postgres: ' POSTGRES_ADMIN_PASSWORD + +read -p 'Would you like to modify postgres rights for shared hosting? (Y/n)' POSTGRES_SHARED_HOSTING + +touch .env +echo "POSTGRES_VERSION="$POSTGRES_VERSION >> .env +echo "POSTGRES_HOST_IP_ADDRESS="$POSTGRES_HOST_IP_ADDRESS >> .env +echo "POSTGRES_HOST_PORT="$POSTGRES_HOST_PORT >> .env +echo "POSTGRES_ADMIN_USER="$POSTGRES_ADMIN_USER >> .env +echo "POSTGRES_ADMIN_PASSWORD="$POSTGRES_ADMIN_PASSWORD >> .env + +docker-compose up -d + +sleep 5 + +if [ $POSTGRES_SHARED_HOSTING == 'y' ]; then + touch tmp + echo "REVOKE ALL ON DATABASE template1 FROM public;" >> tmp + echo "REVOKE ALL ON SCHEMA public FROM public;" >> tmp + echo "GRANT ALL ON SCHEMA public TO "$POSTGRES_ADMIN_USER";" >> tmp + echo "REVOKE ALL ON pg_user FROM public;" >> tmp + echo "REVOKE ALL ON pg_roles FROM public;" >> tmp + echo "REVOKE ALL ON pg_group FROM public;" >> tmp + echo "REVOKE ALL ON pg_authid FROM public;" >> tmp + echo "REVOKE ALL ON pg_auth_members FROM public;" >> tmp + echo "REVOKE ALL ON pg_database FROM public;" >> tmp + echo "REVOKE ALL ON pg_tablespace FROM public;" >> tmp + echo "REVOKE ALL ON pg_settings FROM public;" >> tmp + + cat tmp | docker exec -i postgres psql -U $POSTGRES_ADMIN_USER -d template1 + + rm -f tmp