Define docker commands in your Dockerfile
Project description
wdocker
Github | BitBucket | PyPI | Travis-CI
wdocker is a simple little solution to manage your docker image(s) and container(s) without having to remember and type long lists of optional arguments to docker commands. There are far more sophisticated soultions for managing Docker container environments like Decking or Docker compose and I advise to use them for setting up environments of multiple containers.
Reasons for using this docker wrapper called wdocker may be:
it does not need an (extra) configfile
it does not make any assumptions about your docker environment
it is very flexible and scriptable
Dependencies
Installing
Installing (from the Python Package Index):
sudo pip install --upgrade wdocker
Installing (development version):
git clone git://github.com/babab/wdocker.git
cd wdocker
sudo make install
Un-installing:
pip uninstall wdocker
Writing commands in your Dockerfile
When wdocker runs, it parses the Dockerfile in the current directory and tries to find variables and commands. These are both defined by using a ‘special’ comment, that begins with #wd#.
Defining a variable:
#wd# <var> = <value>
Defining a command (commands are very much like shell aliases):
#wd# <command>: <shell command>
Expanding a variable in another variable or command:
#wd# somevar = {variable}
#wd# somecommand: {variable}
Dockerfile examples
You must define your own commands and it don’t even have to be docker commands, so you can get as creative as you would like.
A very basic Dockerfile might look like this:
#wd# name = example_basic
#wd# build: docker build -t {name} .
#wd# run: docker run -it --name {name} {name}
FROM debian:latest
CMD watch ps aux
It is perfectly possible to combine variables and commands, like in this example:
# wdocker vars:
#wd# docker = docker
#wd# name = combined
#wd# build = {docker} build -t {name} .
#wd# run = {docker} run -it --name {name} {name}
# wdocker commands:
#wd# build: {build}
#wd# run: {run}
#wd# up: {build} && {run}
FROM debian:latest
CMD watch ps aux
Using wdocker to run commands
It you just run wdocker without any arguments, it will show a usage message with the possible commands that you have defined in you Dockerfile with the variables expanded. This can be used to review any command before actually executing it.
To also show variables and internal commands, run wdocker with either -h, -help or --help.
The usage message for the last Dockerfile example looks like this:
Usage: wdocker [<command> | -help]
Commands:
build docker build -t combined .
run docker run -it --name combined combined
up docker build -t combined . && docker run -it --name combined combined
And the full message with wdocker -help looks like this:
Usage: wdocker [<command> | -help]
Internal commands:
-help, -h, --help show full usage info and vars
-version show version info
-print-var <variable> print value of <variable>
Variables:
docker = docker
name = combined
build = docker build -t combined .
run = docker run -it --name combined combined
Commands:
build docker build -t combined .
run docker run -it --name combined combined
up docker build -t combined . && docker run -it --name combined combined
This means you can proceed to execute either wdocker build, wdocker run or wdocker up.
Running tests
Testing is done with nose. To install nose and run tests in a Python virtualenv for example, do the following (pyvenv is available since Python 3.3):
pyvenv .virtualenv
source .virtualenv/bin/activate
pip install -r requirements-dev.txt
nosetests -v
Tests are run automatically for each commit and/or pull request by Travis-CI.
Bugs, Issues and Enhancements
Feel free to use the issues, forking and/or pull requests mechanisms of Github or Bitbucket to submit bugs, ideas or enhancements.
License
wdocker is released under an ISC license, which is functionally equivalent to the simplified BSD and MIT/Expat licenses, with language that was deemed unnecessary by the Berne convention removed.
Copyright (c) 2015 Benjamin Althues <benjamin@babab.nl>
Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Change Log
All notable changes to wdocker will be documented here. The project adheres to Semantic Versioning.
0.2.0 - 2015-10-02
Added
This CHANGELOG
Internal command -version for displaying version information
Support for full shell commands like docker foo exec ip addr | grep 172
Fixed
Internal commands not displaying with -help when there is no Dockerfile
Handle error when variable is called but not defined
0.1.0 - 2015-09-26
Added
Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file wdocker-0.2.0.tar.gz
.
File metadata
- Download URL: wdocker-0.2.0.tar.gz
- Upload date:
- Size: 7.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1844a0fe254c3765790d1e3527de375a239edb6655b3819fa8ab7ab9ea983787 |
|
MD5 | d873202d66b1d99a13004009e9f36d25 |
|
BLAKE2b-256 | 5ef8921a7547a47f5ffd8e29e1f0daf9e70ee91db03c13c718de278f560e42ac |
File details
Details for the file wdocker-0.2.0-py2.py3-none-any.whl
.
File metadata
- Download URL: wdocker-0.2.0-py2.py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3dd4f7bd5d6c5d1d9956c11671d3549d9a907fccb2bd242abd3ee6cb2db91c8 |
|
MD5 | 0af2fbf9aff1137838b92fb0edc61b3b |
|
BLAKE2b-256 | be4c4d7b1bf736f13813187c57b0036c5e68d4c561a0526814d6cd8ed78fd779 |