ddb
Erase environment differences, make developers happy !
ddb automates application configuration so differences between development, staging and production environment can
be erased. It provides features to generate, activate and adjust configuration files based on a single overridable and
extendable configuration, while enhancing the developer experience and reducing manual operations.
Primarly designed for docker compose and docker-devbox,
this tool makes the developer forget about the docker hard stuff by providing commands right into it's PATH, so it's
experience looks like everything is native and locally installed.
Thanks to a pluggable, event based and easy to extend architecture, it can bring powerful configuration automation to
any technical context.
Install
ddb is supported on Linux and Windows. MacOS is still unsupported, but it should come soon.
You can download binary releases on github, or
install on Python >= 3.5 with pip.
pip install docker-devbox-ddb
Docs
Documentation is available here
History
v2.0.0 (2023-10-16)
Feature
- Always specify the docker-compose.yml file in docker run (#224) (
3f756de
)
Fix
- tests: Replace docker-compose with python-on-whales (#227) (
52c2bce
) - doc: Fix XDebug typo in doc (
25a87f3
) - doc: Links to docker-devbox should go on the correct repo (
2bee946
) - tests: Unset local variable override to allow local tests (
09f7caa
) - ci: Remove deprecated docker-compose dependency (
714da68
) - ci: Use python-semantic-release < 8 for now (
f51174d
) - readme: Replace compose v1 with v2 (
b63fdd0
) - tests: Fixed tests related to the recent ddb run modification (
cf0376f
) - pylint: Disable false-positive pylint warning (
cb460c9
) - doc: Fixed typo in symfony sample (
ffb8f19
)
Breaking
- remove support for ubuntu 18 (
b2ff624
)
v1.17.0 (2023-02-18)
Feature
- dependencies: Add python 3.11 support (
e6fcd6a
)
Fix
- shell: Replace tempfile with mktemp to remove the deprecation warning (
46329df
)
v1.16.0 (2022-10-13)
Feature
- file: Add
**/.yarn
to file.excludes
default value (5ccfb47
) - windows: Improve windows support (
2aded1f
) - docker: Add docker compose v2 support (
d1d522b
) - docker: Set
docker.ip
fallback to 127.0.0.1
(5d0afb8
)
Fix
- windows: Fix invalid mapPath in libjsonnet (
74ef98a
) - docker: Sort path mapping in both python and jsonnet (
e9d53e3
)
Performance
- file: Improve performance of file walker (
6bf49ea
)
v1.15.6 (2021-11-09)
Fix
- run: Wrap $@ in single quote to echo command in temporary file (
d5ee3a2
)
v1.15.5 (2021-11-09)
Fix
- run: Fix DDB_RUN_OPTS handling to quote arguments properly (
e91a168
)
v1.15.4 (2021-11-05)
Fix
- shell: Fix invalid generated binary shims (#213) (
5301003
)
v1.15.3 (2021-11-05)
Fix
- shell: Improve binary shim by generating temporary file (#211) (
22046e9
)
v1.15.2 (2021-10-18)
Fix
- core: Use tag instead of version to build release url (
446b140
) - copy: Fix copy when used in a subdirectory (
602086b
)
v1.15.1 (2021-10-14)
Fix
- fixuid: Enhance verbosity and user messages (
3668379
)
v1.15.0 (2021-10-14)
Feature
- Drop ubuntu 16.04 support for binary (
7335a5c
) - fixuid: Use docker cli instead of docker-py (
cba2394
)
Fix
- fixuid: Use fixuid v0.5.1 (
0fd82e1
)
v1.14.0 (2021-08-04)
Feature
- jsonnet: Generate compose network name without underscore (
4b6c139
)
Fix
- jsonnet: Replace dots with dash in traefik labels (#205) (
9a79b7b
) - jsonnet: Remove duplicate _default in COMPOSE_NETWORK_NAME env var (
0c2113a
)
v1.13.3 (2021-04-01)
Fix
- run: Use avoid_stdout in ddb run command (#204) (
589cb13
)
Documentation
- binaries: Add DDB_RUN_OPTS note (
5425efe
)
v1.13.2 (2021-03-24)
Fix
- binary: Binary is now registered again when condition is changed (
fd5230b
)
Documentation
- binaries: Typo in docker compose command (
88ab7b0
)
v1.13.1 (2021-02-24)
Fix
- self-update: Fix permission issues with self-update command (#146) (
4cd8bce
)
Documentation
- faq: Add ddb-linux-older-glic edition note (
895742b
)
v1.13.0 (2021-02-24)
Feature
- core: Add release_asset_name to customize asset to download on update (
e2b3324
)
Documentation
- Update FAQ (
4cea4bf
) - Remove defaults, add Djp packages and Binaries pages (
0ebc892
) - jsonnet: Add missing jsonnet.docker.compose configuration properties (
5941a46
)
v1.12.0 (2021-02-19)
Feature
- config: Add more capabilities to config command (
89d20d6
)
Fix
- jsonnet: Remove client_port=9000 for xdebug3 configuration (
d8ca959
) - jsonnet: Set log_level=0 to xdebug3 configuration (
689efb0
)
v1.11.0 (2021-02-17)
Feature
- run: Add
DDB_RUN_OPTS
support to add docker-compose options on ddb run (b1aca49
)
Fix
- core: Disable core.check_updates after running self-update command (
6274317
)
v1.10.3 (2021-02-15)
Fix
- alpine: Add Alpine Linux support (
bcf04b5
)
v1.10.2 (2021-02-15)
Fix
- package: Fix binary package error
NameError: name 'help' is not defined
(b066513
) - package: Fix binary package error
NameError: name 'help' is not defined
(47bf72c
)
v1.10.1 (2021-02-15)
Fix
- core: Use new binary names for self-update (
56fc5ab
)
v1.10.0 (2021-02-15)
Feature
- jsonnet: Add mount options to mount named volumes inside project directory (
401c9bd
) - config: Add
core.check_updates
configuration (3a779a4
)
Fix
- traefik: Stop using deprecated properties internally (
d3f06d8
) - selfupdate: Display detected binary path on permission error (
c0cfe91
)
v1.9.2 (2021-02-09)
Fix
- fixuid: Fix automatic fixuid configuration for some Dockerfile (
f504416
) - binary: Use COMPOSE_IGNORE_ORPHANS=1 in global binary shim (
9d4a955
) - binary: Fix orphan containers when using global binaries (#195) (
40b3cae
)
v1.9.1 (2021-02-08)
Fix
- jsonnet: Add missing ddb.feature.jsonnet.docker package in exe version (
5253802
)
v1.9.0 (2021-02-05)
Feature
- jsonnet: Add port conflict solver as jsonnet postprocessor (
0c7bd16
)
v1.8.1 (2021-02-05)
Fix
- jsonnet: Add configurable default value for Binary global flag (
ed444eb
) - gitignore: Avoid addition of global binaries in .gitignore (
15f95f4
)
v1.8.0 (2021-02-05)
Feature
- config: Enhance config command output and add options (#189) (
02dbcb5
) - binary: Add global and entrypoint options to binaries (#185) (
61f973c
)
Fix
- file: Add .idea directory to default excludes (
24d3df7
) - jsonnet: Add support for volume starting with an environment variable (
e4f2bcb
) - gitignore: Check if file is gitignore before trying to remove it (#190) (
4cbcdec
)
v1.7.3 (2021-02-04)
Fix
- Add missing extensions in binary bundle (#187) (
63febce
)
v1.7.2 (2021-02-03)
Fix
- jinja: Fix extra EOL issue when deprecated property are used (
13c2d0e
)
v1.7.1 (2021-02-03)
Fix
- gitignore: Sort gitignore entries to avoid conflicts (
071fedd
)
v1.7.0 (2021-02-03)
Feature
- cookiecutter: Add .patch files support in cookiecutter feature (
3b20434
) - djp: Add djp packages support through cookiecutter feature (
15938ec
) - jsonnet: Enhance
ddb.docker.libjsonnet
to support future djp packages (a48c5a9
) - core: Add
core.domain.value
read only property (ab4001e
) - jsonnet: Add
ddb.env.current
and ddb.env.available
(edaef0a
)
Fix
- autofix: Make
--autofix
less intrusive and fix variables only (70389db
) - jinja: Autofix now fix templates in code blocks only (
8575f79
) - inetum: We are Inetum, mais Orléans quand même :) (
f2e85ea
) - inetum: We are Inetum, mais Orléans quand même :) (
5281071
)
Documentation
v1.6.1 (2021-01-20)
Fix
- migration: Add boolean value support fr docker.reverse_proxy.type migration (#184) (
682f23f
)
v1.6.0 (2021-01-19)
Feature
- jinja: Add configuration options to jinja Environment (#181) (
092d9d0
) - scope: Refactor configuration schemas with autofix (#164 #179) (
10b7a72
)
Fix
- config: Fix deprecations warnings and backward compatibility (
6ab20c2
)
Documentation
- usage: Update usage output in docs (
4ebb752
)
v1.5.1 (2021-01-15)
Fix
- binary options: Fix an issue introduced by #141 (
f404353
)
v1.5.0 (2021-01-14)
Feature
- configure: Ensure project configuration file is available before configure (#170) (
bd1c814
) - file: Add
target/
and dist/
directories to default excludes (9b7b467
) - binaries: Allow many binaries to be registered for the same name (#141) (
b3d8cd8
) - permission: Copy permission from template file to target (#147) (
8595c9f
) - devbox: Prepare next release of docker-devbox with retro-compatibility (
fdfbc24
) - jsonnet: Add Expose function in ddb.docker.libjsonnet (
dffcab1
)
Fix
- shell: Fix drive case for default Windows
docker.path_mapping
(#159) (a3e2c09
) - shell: Use
_
instead of -
to sanitize environment variable name (#160) (f9e11a8
) - shell: Add support for relative paths in shell.path.directory (#168) (
6f4f938
) - main: Clear cache when an unexpected error occurs (#169) (
8c0940a
) - binary options: Fix an issue introduced by #141 and force lf (
76c7bf2
) - shell: Move PWD environment exclude to configuration (
848ec99
) - traefik: Check domain is not empty when rule is empty (
33bd166
)
Documentation
- style: Enhance docs style for all configuration properties and examples (
9c396d5
) - jsonnet: Add session parameter to XDebug documentation (
5febad8
)
v1.4.4 (2020-12-30)
Fix
- bash: Exclude PWD environment variable from backup/restore (#142) (
e8ee977
) - update: Fix can only concatenate str (not "list") to str (#143) (
0348407
)
v1.4.3 (2020-12-22)
Fix
- dependencies: Remove docker-compose dependency (#140) (
ac12c8a
) - core: Fix self-update command error on file replace (#138) (
97e4f81
) - changelog: Fix changelog (
9507778
) - fixuid: Remove print scrap (
dad030f
)
v1.4.2 (2020-12-21)
Feature
- fixuid: Add Dockerfile comments to disable or customize fixuid automic configuration (
e855efc
)
Fix
- file: File scan now yield directories so you can use permission on directories (
eb232d8
) - file: Fix recursive=False parameter in FileWalker (
c81fd76
)
Documentation
- setuptools: Update python versions in classifiers (
4012cbf
)
v1.4.1 (2020-12-17)
Fix
- core: Fix self-update command (
843cf67
)
v1.4.0 (2020-12-17)
Feature
- core: Add
core.required_version
parameter to enforce project ddb version requirement (#75) (bbf32e6
) - main: Add main:start event (
8764d01
) - self-update: Add self-update command to update binary from github (#131) (
0171f37
) - Add Python 3.9 support and drop Python 3.5 support (
83e97e9
)
Documentation
- self-update: Add docs for the new self-update command (
86b5ef8
) - contributing: We are now using github actions and semantic release (
b4f1127
)
v1.3.1 (2020-12-16)
Fix
- version: Version check now removes "v" first character from tag (#129) (
71a3567
)
v1.3.0 (2020-12-16)
Feature
- docker: Add https option to reverse-proxy features (libjsonnet and configuration) (
c2c1fad
) - docker: Add support for named user and group (
62ab647
) - configuration: Add insert/insert_if_missing merge strategies. (
00d62b9
) - configuration: Add core.configuration.extra to include additional configuration files (
b7d30de
) - xdebug: Add more parameters to XDebug jsonnet function (
cf5dc74
) - JSonnet: Add support for XDebug 3 (
6bc337c
)
Fix
- docker: Add tests and fix issues with named user and group (
b88470c
) - shell: Slufigy environment variable names (
0513038
) - copy: Correction du NoneType error (
4b798bd
) - docs: Fix typo for excludes configuration properties (
d0cda14
)
Documentation
- changelog: Reformat changelog (
7440081
)
v1.2.3 (2020-11-13)
- Jsonnet: Add "JoinObjectArray" method.
- Jsonnet: Add
path_prefix
option for a VirtualHost. - Docker: Add
docker.reverse_proxy.redirect_to_path_prefix
which force redirection to path_prefix
if defined on a
VirtualHost. - Traefik: Add
path_prefix
option for a service. - Traefik: Add
redirect_to_path_prefix
option for a service which force redirection to path_prefix
if defined on the
service. - Docker: Add configurations for
docker-compose.yml
generation (file_version
, service_init
and service_context_root
).
1.2.2 (2020-10-21)
- Docker: Add
docker.build_image_tag_from
and deprecates docker.build_image_tag_from_version
. - Watch: Fix file exclusion issues when an ancestor directory is excluded
- Gitignore: add first slash to set full relative path of file added to the gitignore
- Docker Binary: Check if the container is up if user run "ddb run " on a command flagged "exe". If it is down,
it will be launch.
1.2.1 (2020-10-06)
- Jsonnet: Add ServiceName function available globally.
- Core: Avoid
--eject
to delete files outside of project directory.
1.2.0 (2020-10-03)
- Core: Add
--eject
option to configure
command. This option can be used to convert the project to a static version
and detach it from ddb. - Info: Add
traefik.extra_services
to ddb info
command output. - Gitignore: Gitignore feature is now disabled by default on non-dev environment.
1.1.1 (2020-09-22)
- Build: Fix
ModuleNotFoundError: No module named 'compose'
error in binaries built of ddb.
1.1.0 (2020-09-21)
- Docker: Add
--rm
flag to docker-compose run command in binaries. - Version: Fix
version.branch
value when using a detached repository and head refs many branches. If no branch is
reported in refs/head
, it will use refs/remote/origin
to get branche name. - Config: Lists merge strategy is now defined as
override
by default. - Config: Add support for
merge
/value
inside configuration to control merge behavior between configuration files. - Config: Add support for
ddb.<env>.yml
configuration file based on core.env.current
value.
1.0.9 (2020-09-12)
- Traefik: Use Jinja template for
ssl_config_template
parameter (Jinja context match the ddb.yml configuration). - Traefik: Add
extra_services
in traefik
feature. Extra service allow to configure a service running
outside of the docker stack inside traefik, so it's included in the docker network and still benefits of
docker-devbox features (domain name, SSL certificates, ...). - Version: Make detached repo report the effective branch instead of
HEAD
.
1.0.8 (2020-09-10)
- Config: Fix issues with custom config parameters.
- Shell: Raise an error when activate/deactivate was already called.
1.0.7 (2020-09-09)
- Config: Fix overriding of default values with
DDB_OVERRIDE_*
environment variables. - Core: Use
toilal/pyinstaller-linux
and toilal/pyinstaller-windows
docker images to build binaries.
1.0.6 (2020-09-09)
- Copy: Add
file:generated
events on copy to add copied files in .gitignore
. - Copy: Run copy feature on each
ddb configure
command instead of a single time. - Shell: Use
.
instead of source
to make /bin/sh
work properly. - Shell: Add
check-activated
command and avoid issues when activating the project many times.
1.0.5 (2020-09-07)
- Jsonnet: Fix
duplicate field name
error when sharing a named volume on many docker-compose services. - Certs: Add creation of
.signer.crt
to help automation of signer TLS Certificate configuration in the project.
1.0.4 (2020-09-04)
- Shell: Fix binary shims when
-h
/--help
is given as argument. - Core: Add the
info
command which output compacted information about docker containers such as environment
variables, virtual host, exposed ports and binaries. - Jsonnet: Fix
cache_from
value for docker services to match the image
one - Fixuid: Enhance fixuid configuration when image has no entrypoint defined.
- Config: Add support for
ddb.yml
configuration watch. If a project configuration file changes, configuration is
reloaded and command is runned again to update all generated files. It currently doesn't watch configuration files
from ~/.docker-devbox nor ~/.docker-devbox/ddb directories as it's based on file
feature events.
1.0.3 (2020-09-01)
- Certs: Fix inversion between certificate and key for
certs:generated
and certs:available
events.
1.0.2 (2020-08-28)
- Core: Fix
[Errno 11] Resource temporarily unavailable
error when running more than one instance of ddb. - Aliases: Fix global aliases for projects lying inside docker devbox home directory (traefik, portainer, cfssl).
1.0.1 (2020-08-25)
- Docker: Limit
port_prefix
to 655
instead of 1000
to avoid invalid port specification error.
1.0.0 (2020-08-25)
- Binaries: Fix docker binary workdir value
- Shell: Add
global_aliases
configuration option to generate aliases inside global docker devbox home.
1.0.0-beta9 (2020-08-20)
- File: Emit delete events before found events.
- Core: Set working directory to project home.
- Fixuid: Upgrade fixuid to v0.5.
1.0.0-beta8 (2020-08-10)
- Binary: Add exe option to use docker-compose exec instead of run
- Gitignore: Add enforce option to force addition of file to gitignore
- Certs: Add
certs.cfssl.append_ca_certificate
and certs.cfssl.verify_checksum
options support - Core: Add release check on --version
- Core: Fix crash when github quota has exceeded on release check
1.0.0-beta7 (2020-07-25)
- Add MacOS support (no binary package available though)
- Shell: Add zsh support
- Jsonnet: Fix an issue when reverse proxy is not defined to traefik.
- Docs: Add way more docs
1.0.0-beta6 (2020-07-03)
- Windows Shell: Fix alias generation
- Jsonnet: Add
redirect_to_https
to ddb.VirtualHost in order to redirect http requests to https - Certs/Traefik: Remove previously generated certs when certs:generate event is removed from docker-compose.yml configuration
1.0.0-beta5 (2020-06-26)
- Fixuid: Add Dockerfile generation when fixuid.yml file is created or deleted
- Docker: Add
docker.reverse_proxy.certresolver
to setup traefik certresolver globally - Docker: Set
docker.restart_policy
default value to unless-stopped
if core.env.current
is different of dev
- Jsonnet: Add optional
router_rule
parameter to ddb.VirtualHost
function in order to override the default Host(hostname)
.
For traefik, available values in the official documentation - Templates: Keep the file that match template target name when it has been modified since latest rendering (#39)
1.0.0-beta4 (2020-06-25)
- Remove existing file or directory when generating a new file (#31)
- Docker: Fix missing
COMPOSE_PROJECT_NAME
and COMPOSE_NETWORK_NAME
environment variables on ddb activate - Jsonnet: Fix a bug when multiple Virtualhost are defined on the same docker-compose service
1.0.0-beta3 (2020-06-23)
- Shell: Add aliases management
1.0.0-beta2 (2020-06-08)
- Docker and Permissions features are now plugged on File feature
- Docker-compose locally mapped files/directories are now created on
ddb configure
to ensure valid user owning - Fix Logging Error in chmod
- Upgrade chmod-monkey and use it everywhere to improve readability
1.0.0-beta1 (2020-05-12)
- Add
git
feature. Currently, there is only one action : git:fix-files-permissions to update permissions for files
based on git index. In order to update permissions of a file in git, use command
git update-index --chmod=+x foo.sh
. It can be disabled by setting git.fix_files_permissions
to false in
configuration. - Add
--fail-safe
command line argument to stop on first error. - Add
utils.process
module to help running external commands. It makes possible to configure path and additional
arguments to any external process invoked by ddb. - Default command line argument values can now be customized in configuration using
defaults
key. - Fix and issue with traefik and jsonnet docker-compose when
networks
is defined in at least one service definition. - Add
permissions
feature to apply chmod on some files. - Add windows support for shell integration (cmd.exe only, powershell is still unsupported).
1.0.0-alpha1 (2020-05-10)
- First release, containing the following features:
certs
, cookiecutter
, copy
, core
, docker
, file
,
fixuid
, gitignore
, jinja
, jsonnet
, run
, shell
, smartcd
, symlinks
, traefik
, version
, ytt