Public | Automated Build

Last pushed: a month ago
Short Description
Disposable staging environments using docker and friends.
Full Description

Dockup

Dockup creates disposable staging environments for your services using docker compose.

You can automate staging deployments when you submit pull requests:

Or whenever you feel like, using Slack etc:

Features:

  • Disposable environments using docker-compose
  • Simple API and UI to deploy apps in git reposisotries
  • Works with Github webhooks
  • Supports multi-container environments

This repository is a redo of chatops_deployer
using Elixir to solve fault tolerance issues.

Also dockup will include many other features like:

  1. SSL support
  2. Authentication
  3. Cleanup of expired environments
  4. etc ..

Installation

TODO

Development

Clone the repo and run:

mix deps.get
iex -S mix phoenix.server

You can access Dockup UI at http://localhost:4000.

Development on OSX

# Install latest elixir
brew install elixir

cd dockup
./scripts/setup

Once compilation runs fine, you can start dockup.
If you are running this on OSX, unless you have docker CLI available in the
development environment, you need to enable dry run mode in order to start
Dockup. Run:

# Use this instead of iex -S mix phoenix.server
DOCKUP_DRY_RUN=true iex -S mix phoenix.server

Using Vagrant

It is recommended to use Vagrant for the following reasons:

  1. You can use real docker and do real deployments on OSX
  2. You can destroy containers and restart from a clean slate

A Vagrantfile is checked in which will provision an ubuntu machine with
everything ready for testing the app. Here's how you can set it up:

$ vagrant up
$ vagrant ssh
$ cd /vagrant
$ ./scripts/setup

Environment variables

Refer apps/dockup/config/config.exs to see the list of configurations

Configuration

Dockup can be configured by adding configuration files in the directory specified
in environment variable DOCKUP_CONFIG_DIR
or in the configuration value of dockup: :config_dir. If these are not specified,
dockup will use /dockup/dockup_config as the config directory in :prod environment
and ./dockup_config in :dev environment. Continue reading to learn what
configurations are possible.

SSL

If you want to enable SSL for the dockup domain, copy your cert and key files
to: <dockup_config_dir>/dockup_ssl/crt and <dockup_config_dir>/dockup_ssl/key
Please note that this will enable SSL only for dockup itself and not for the
service URLs which are created dynamically.

Custom Nginx configurations

If you want to use custom nginx configurations, you may do so by modifying the
default nginx configs generated by dockup.
Once dockup has been started, you can find them at <dockup_config_dir>/nginx.conf
(the default nginx config file) and <dockup_config_dir>/dockup.conf
(the configuration used for serving dockup app).
Please note that as long as these files exist, dockup will never overwrite them.

API

/api/deployments

This API endpoint is used to deploy a dockerized app.

curl -XPOST  -d '{"git_url":"https://github.com/code-mancers/project.git","branch":"master","callback_url":"fake_callback"}' -H "Content-Type: application/json" http://localhost:4000/api/deployments
Docker Pull Command
Owner
codemancers
Source Repository

Comments (0)