The backend works locally and it’s already a big step forward, but how can we deploy it?
We’ll use Heroku for it.
If you don’t have a Heroku account you first need to sign up.
You’ll also need Heroku CLI installed, here are the instructions.
To make sure that the appropriate Java Runtime version is used while deploying on Heroku we need one more configuration . Add
system.properties file to the root of your project with the following lines:
rootProject.name = "backend"
After you’ve registered and installed Heroku CLI, you should be able to login from the terminal with the following command:
And then create a new application with
You’ll get the
id of your newly created app in return, like
Then you will need to install a Heroku deploy plugin:
heroku plugins:install heroku-cli-deploy
Now deploy the jar created by
shadowJar under the name of our Heroku app with this command. Don’t forget to change the app name.
heroku deploy:jar ./backend/build/libs/Backend.jar --app enigmatic-sands-01782
It’ll take some time to upload the build
After a while you’ll see the upload succeeded:
Finally, add your remote heroku git source:
git remote add heroku email@example.com:enigmatic-sands-01782.git
In the future, every time you make changes you’ll need to update you remote like this:
Try opening https://enigmatic-sands-01782.herokuapp.com/pizza
Don’t forget to replace the Heroku app name with your own.
You’ll see an error.
Try investigating with
heroku logs --tail, you’ll find:
Caused by: org.koin.core.error.InstanceCreationException: Could not create
instance for [Singleton:'com.example.recipecollection.backend.localSource
Caused by: java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.
It happens because we are missing a postgres database plugin which comes for free with Heroku. Let’s add it with
heroku addons:create heroku-postgresql
You’ll see something like this:
This has created your database url and should have automatically set the
JDBC_DATABASE_URL environment variable in heroku. To check it, you can either use
heroku run echo \$JDBC_DATABASE_URL
Let’s check out our app again with
Go to https://enigmatic-sands-01782.herokuapp.com/pizza.
Awesome, now we can see our application serving pizza from Heroku!