Skip to content

jwaldrip/tug

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tug

Use Docker for development

Prerequisites

Installation

$ go get github.com/nitrous-io/tug

Set up your application

Create a Tugfile

web:      bin/web -p $PORT
postgres: docker/postgres:9.3.5
redis:    docker/redis:2.8.9

Any command that starts with docker/ will be interpreted as a docker image tag.

Create a bootstrap script

If your app needs to do any setup before it starts, put it in a bin/bootstrap file:

#!/bin/sh
bundle exec rake db:migrate

Make sure your bin/bootstrap is executable, i.e. chmod +x bin/bootstrap

Start the app

$ tug start
postgres | fixing permissions on existing onesory /var/lib/postgresql/data ... ok
postgres | creating subdirectories ... ok
postgres | selecting default max_connections ... 100
postgres | selecting default shared_buffers ... 128MB
web      | listening on 0.0.0.0:5000

Container linking

Tug will set environment variables in the Docker container linking format, like this:

POSTGRES_PORT_5432_TCP=tcp://127.0.0.1:5000
POSTGRES_PORT_5432_TCP_PROTO=tcp
POSTGRES_PORT_5432_TCP_ADDR=127.0.0.1
POSTGRES_PORT_5432_TCP_PORT=5000
Aliasing ENV vars

If your application expects env vars to be named differently, alias them in your Tugfile:

web: env DATABASE_HOST=$POSTGRES_PORT_5432_ADDR bin/web

Dockerfile

If your app has a Dockerfile, tug will use it to build and run your app in Docker while setting up appropriate port forwarding and file synchronization.

For Tug to work most effectively your Dockerfile should include the following:

  • The listening web port should be specified with an EXPOSE statement
  • The app's code should be included from the local directory using an ADD statement
Example Dockerfile
FROM ruby:2.1.2

ENV PORT 3000
EXPOSE 3000

WORKDIR /app
ADD . /app

Contributors

Tug is sponsored by Nitrous.IO and built by these contributors.

About

Docker development workflow

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Go 98.6%
  • Shell 1.4%