Project-Books / books-api

GraphQL Books API
https://project-books.github.io/#books-api
MIT License
36 stars 59 forks source link
books books-api dgs docker flyway graphql graphql-java hacktoberfest maven postgresql spring spring-boot spring-data-jpa

books-api-logo

Build Status Code coverage Slack

GraphQL books API made using Spring Boot and DGS. This is a sibling project of the Book Project.

Prerequisites

Recommended IntelliJ plugins:

Enable Buildkit

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

Running the app locally

With Docker

  1. Ensure Docker Desktop is running if you are using macOS or Windows. If using Linux, ensure the Docker daemon is running
  2. 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
  3. 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
  4. 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)
  5. Go to http://localhost:8082/graphiql

In your IDE

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:

Windows: error code 127

image

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

Access database

To access the PostgreSQL database when docker-compose/Docker desktop is running, use the follow credentials in your favourite client:

For example, in IntelliJ ultimate or DataGrip:

image

Contributing

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.