GraphQL books API made using Spring Boot and DGS. This is a sibling project of the Book Project.
- Docker
- For Linux users, install docker-compose and Docker engine
- For macOS and Windows users, install Docker Desktop
Recommended IntelliJ plugins:
As this Dockerfile caches the projects maven dependencies, please ensure docker buildkit is supported (Docker v18.09+) and is enabled.
Use the following command to see if the environment variable is set.
echo $DOCKER_BUILDKIT
If the result returns a blank string or an 0 please use the following command to set it:
export DOCKER_BUILDKIT=1
- Ensure Docker Desktop is running if you are using macOS or Windows. If using Linux, ensure the Docker daemon is running
- Build the docker image:
- With default values:
docker-compose build
, or - with a custom mvn goal(s), e.g.
docker-compose build --build-arg mvn_arg="clean package" booksapi
to run the tests as well
- With default values:
- Run the docker-compose file:
docker-compose --env-file .env up -d
- if you wish to view the output use
docker logs -f booksapi
- alternatively use
docker-compose up db booksapi
to launch the containers interactively
- if you wish to view the output use
- Wait for the server to start (macOS and Windows: you can check this on Docker desktop for the
booksapi
container if you used the detached flag earlier) - Go to
http://localhost:8082/graphiql
To run the backend in your IDE, follow the instructions on what to comment out and uncomment in the application.properties file. You will still need to build and run the backend container:
docker-compose build
anddocker compose up db -d
If you are using Powershell on Windows and are getting error code 127, you will need to update the line endings in the start.sh script. Run the command below in Powershell and then re-run the Docker commands in the running the app section.
(Get-Content ./docker/bin/start.sh -raw | % {$_ -replace "`r", ""}) | Set-Content -NoNewline ./docker/bin/start.sh
To access the PostgreSQL database when docker-compose/Docker desktop is running, use the follow credentials in your favourite client:
- Host:
localhost
- Port:
5432
- User:
dbuser
- Password:
dbpassword
- Database: books_api
- URL:
jdbc:postgresql://localhost:5432/books_api
For example, in IntelliJ ultimate or DataGrip:
If you wish to contribute (thanks!), please first see the contributing document.
Note: we skip tests in our Docker builds for convenience, but please ensure you run the tests and they pass before pushing.