DEV Community

Eric Helgeson
Eric Helgeson

Posted on

4 1

Deploying Grails 4 to Heroku

Heroku is a PaaS(Platform as a Service) for running web apps that makes it as simple as a git push to deploy. They offer a free tier that is great for demos or quick testing environments and services such as redis, postgres, and many others.

There are a few minor changes from the default heroku gradle build pack to get your Grails 4 app run.

By default heroku will run the task stage to get your app ready. You could add a gradle task named stage or change the default task by running:

$ heroku config:set GRADLE_TASK="assemble"

The Procfile is used to tell heroku how to start your app, in this case, we need to pass the dynamically assigned port to our app, along with heroku's JAVA_OPTS. Lastly, tell it where gradle put our war/jar.

Procfile

web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/*.war

If you'd like to run on OpenJDK 11 - create a system.properties file with the following:

system.properties

java.runtime.version=11

And thats it. Push to Heroku and your app will build and deploy in about a minute.

$ git push heroku master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 227 bytes | 227.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Gradle app detected
remote: -----> Installing JDK 11... done
remote: -----> Building Gradle app...
remote: -----> executing ./gradlew assemble
remote:        > Task :compileJava NO-SOURCE
remote:        > Task :compileGroovy
remote:        > Task :buildProperties
remote:        > Task :processResources
remote:        > Task :classes
remote:        > Task :compileGsonViews
remote:        > Task :findMainClass
remote:        > Task :bootWar
remote:        > Task :war SKIPPED
remote:        > Task :assemble
remote:
remote:        BUILD SUCCESSFUL in 25s
remote:        6 actionable tasks: 6 executed
remote: -----> Discovering process types
remote:        Procfile declares types -> (none)
remote:
remote: -----> Compressing...
remote:        Done: 117.2M
remote: -----> Launching...
remote:        Released v21
remote:        https://my-app.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/my-app.git
   905744b..b239ff4  master -> master

See also:
https://devcenter.heroku.com/categories/java-support
https://devcenter.heroku.com/articles/deploying-gradle-apps-on-heroku

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more