Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
www
 
 
 
 
 
 

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>")
You can’t perform that action at this time.