Home

Awesome

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:

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>")