Giter Site home page Giter Site logo

khezrian / app-runner Goto Github PK

View Code? Open in Web Editor NEW

This project forked from danielflower/app-runner

0.0 0.0 0.0 374 KB

Self-hosted platform as a service for Java, Node, Clojure and Scala apps. Push to a git repo to deploy apps.

License: MIT License

Batchfile 0.09% Shell 0.28% Go 0.39% Clojure 0.71% Java 97.17% HTML 0.08% JavaScript 0.25% Scala 1.03%

app-runner's Introduction

App Runner

The little web app runner that hosts java, clojure, scala, golang and nodejs apps. This allows you to easily deploy a self-hosted Platform As A Service where you can very easily add new apps and have App Runner build and run them by cloning the code from a Git repo.

Features

  • Host your own Platform as a Service: you just need Java 8, plus optional build tools (Maven, Leinigen, Scala/SBT, go compiler, NodeJS/NPM).
  • Deploy web apps with no build servers or deploy scripts needed: tell AppRunner the Git URL and it will automatically build and host it.
  • Auto deploy on source control change when using post-commit hooks
  • Zero downtime deployment: when changes are being deployed, a new instance is built, tests are run, and the app is started. Only when the new instance is running will it be made live.
  • An optional dashboard which links to all your apps making it easy to find, add, and deploy.
  • Horizontally scale individual app runners across multiple machines with App Runner Router

Who is this for?

App Runner is especially useful for people or teams who are creating many little web applications and want the convenience of a platform such as Heroku but cannot use an external service.

Change log

  • 1.4.0 Added a PUT /apps/{name} method to change the GIT URL of an app, and made it so POSTing an app to /apps that already exists returns a 400 error. Also fixed the return type (to application/json) for POST /apps. There is also --app-name=your-app-name passed as a command line parameter to Node apps, mostly to aid in finding which app is which when looking at running processes.
  • 1.3.4 GoLang support
  • 1.2.2 Support for HTTPS (see the sample config file for more info). This is also the first version that HTTPS can be used on the app runner router (or other reverse proxy).
  • 1.1.0 Optional support for Scala and better reporting of versions of tools such as java, node, lein etc. When adding a new app, it is immediately cloned and an error is returned if it cannot be cloned or this instance does not support the project type.
  • 1.0.7 Optional backup support: specify a Git URL in the config (appserver.backup.url) to have the data directory backed up to a git repo once an hour.

Running locally

Run com.danielflower.apprunner.RunLocal.main from your IDE. This will use the settings in sample-config.properties. Upon startup, it will try to download, build, and deploy the application specified in the config. Launch the URL that is logged on startup see the hosted sample app.

Deploying

You need to have a Windows or Linux server available with Java and one or more build tools installed:

  • Java 8 or later
  • Maven (if you wish to support Maven builds)
  • Lein (if you wish to support Clojure builds)
  • NodeJS and NPM (if you wish to support Nodejs builds)
  • Scala and SBT (if you wish to support Scala builds)
  • GoLang (if you wish to support go builds)

It's easiest if each tool is available to run from the path, but you can point to specific paths by setting paths in your config file.

Download the latest version of App Runner from Maven central

Run with java -jar app-runner-{version}.jar /path/to/config.properties

See sample-config.properties for sample configuration. The local directory in this repo also has sample start scripts and logging configuration.

Build Status

app-runner's People

Contributors

danielflower avatar janerikazhang avatar michaeldeluna avatar cosm1c avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.