Stop current running container
docker ps -a docker stop 101.1.1
Work in a directory that can be easily cleaned up
mkdir quickstart cd quickstart
Edit the compose config file
nano docker-compose.yml
Note: we changed the port from the default config to 8443
version: '3' services: postgres: image: "postgres:14" restart: always ports: - '5432:5432' environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=pass grouper: image: "i2incommon/grouper:5.7.0" restart: always ports: - '8443:8443' command: - quickstart environment: - GROUPERSYSTEM_QUICKSTART_PASS=pass - GROUPER_MORPHSTRING_ENCRYPT_KEY=abcd1234 - GROUPER_DATABASE_PASSWORD=pass - GROUPER_DATABASE_USERNAME=postgres - GROUPER_DATABASE_URL=jdbc:postgresql://postgres:5432/postgres - GROUPER_AUTO_DDL_UPTOVERSION=5.*.*
Install docker-compose (it it's not already installed)
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
Run the quickstart (use --detach to run in background)
docker-compose up --detach
Temporary fix, if docker-compose gives an error: urllib3 v2.0 only supports OpenSSL 1.1.1+
pip install urllib3==1.26.6
Log in: https://localhost:8443/grouper
GrouperSystem pass
Copy WS client out of container
docker cp quickstart-grouper-1:/opt/grouper/grouperWebapp/WEB-INF/lib/grouperClient-5.7.0.jar ./grouperClient.jar
Might need to run:
sudo yum install java-17-amazon-corretto-headless
Edit config file for WS client
nano grouper.client.properties
Contents of config file
############ grouperClient.webService.url = https://localhost:8443/grouper/servicesRest grouperClient.webService.login = GrouperSystem grouperClient.webService.password = pass # turn off SSL until a real SSL certificate is installed # NOTE, THIS IS NOT GOOD SECURITY AND IS FOR THE QUICK START ONLY! grouperClient.https.customSocketFactory = edu.internet2.middleware.grouperClient.ssl.EasySslSocketFactory ############
Call WS using GrouperClient
java -jar grouperClient.jar --operation=getSubjectsWs --subjectIds=GrouperSystem --debug=true
Call WS endpoint directly
curl -X GET -k -H 'Content-Type: application/json' --user GrouperSystem:pass -i https://localhost:8443/grouper/servicesRest/json/v5_7_000/subjects/GrouperSystem
Use jq command to parse important fields from the json result
Example 1: Pretty-print json output
curl --silent -X GET -k -H 'Content-Type: application/json' --user GrouperSystem:pass https://localhost:8443/grouper/servicesRest/json/v5_7_000/subjects/GrouperSystem | jq .
Example 2: Extract the a value from the json result (WsGetSubjectsResults.wsSubjects[0].id)
curl --silent -X GET -k -H 'Content-Type: application/json' --user GrouperSystem:pass https://localhost:8443/grouper/servicesRest/json/v5_7_000/subjects/GrouperSystem | jq .WsGetSubjectsResults.wsSubjects[].id
Verify image hash
docker image inspect i2incommon/grouper:5.7.0 | grep i2incommon/grouper@sha256
Make command line script
nano grouperQsDockerRun.sh
Command line script contents
#!/bin/bash docker-compose up --detach
Make executable
chmod +x grouperQsDockerRun.sh
Cleanup
Stop the quick start (and remove the container)
docker-compose down