Quickly get started developing clustered Elixir applications for cloud environments.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

Elixir on Docker

Quickly get started developing clustered Elixir applications for cloud environments.

See a walkthrough of developing a chat application from this template

This project template provides a set of sensible defaults for a new application designed to be cloud native. It includes:

  • A main service www, this serves the main content offered by your application.
  • Secure HTTP/2 content delivery with Ace web server.
  • Code reloading in development environment using ExSync.
  • Automatic clustering. Setup for docker-cloud other environments coming soon.
  • Web based metrics, monitoring and observing with Wobserver.
  • Documentation driven development with Raxx.ApiBlueprint.
  • Integration test suit running from the integration service.

Get Started

To use this template docker and docker-compose need to be installed on your machine.

Clone this repository

Change project-name to your projects name.

git clone <url> <project-name>
cd <project-name>

Delete git history.

rm -r .git

Fetch dependencies

docker-compose run --rm www mix deps.get

All mix tasks for a service can be run this way, such as tests for a single service.

Run all services

docker-compose up

Use -d to run in the background. Use --build to ensure images are rebuilt. Use docker-compose down to stop all services.

Run integration tests

docker-compose \
-f docker-compose.yml \
-f docker-compose-test.yml \
run integration /bin/bash -c "mix deps.get; mix test"

The -f flag specifies a compose file to use when starting services.

Attach iex session

docker ps
# Find container-id to attach to.

docker exec -it <container-id> sh bin/debug

# in iex shell
iex(debug@<hostname>)1> Node.connect(:"app@<hostname>")