aboutsummaryrefslogblamecommitdiff
path: root/README.md
blob: a201b685c15f6fd07a8a7499ccf8f1ecd9a71172 (plain) (tree)





























































                                                                         
# Byspel

An example project that showcases how Akka HTTP, Slick and Sqitch can
be used to create a simple web application, and how it can be
*natively* packaged for multiple platforms, including Debian systems
and Docker.

## Building

## Local development

Run `sbt start` to compile sources and run the project. Once started, the
sample website can be viewed at <http://localhost:8080>.

Note that in case schema definitions are changed (via `sqitch
deploy`), table definitions need to be regenerated with `sbt
dbTables`.

## Basic Linux distribution

Run `sbt fhsDist` to copy all project artifacts into a standalone root
filesystem that can be used for platform-specific packaging. Note that
this step also bundles sqitch migrations, compiles a native utility to
change process name, and creates a launcher script.

Check out `tree target/dist/` for a hierarchical representation of all
files and directories created.

## Docker image

A docker image can be created by running

```
docker build -t byspel .
```

Note that this requires that `sbt fhsDist` has been run before. Once
built, `byspel` can be run with `docker run -p 8555:8555 byspel`, and
will be available at <http://localhost:8555>.

## Debian package

One of the main goals of this project was to explore packaging Scala
apps for debian natively. As a result, this project is also a Debian
*source* package, and can be built with any apropriate utility.

For example,
```
debuild
```
will invoke various `dpkg-*` utilities to create a final binary
packages in the parent directory.

Unfortunately, due to sbt's reliance on internet connectivity, it is
difficult to ensure that this package can be built in isolation, as is
done with Debian's official packages. Hence, any packages following
this example project could probably only ever be part of the `contrib`
collection of packages and never in `main`.

## Copying
This project is released under the terms of the 3-clause BSD
license. See LICENSE for details.