Skip to main content

ddb - Erase environment differences, make developers happy !

Project description


PyPI PyPI - Python Version PyPI - License Build Status Code coverage semantic-release

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.


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


Documentation is available here


v1.15.5 (2021-11-09)


  • run: Fix DDB_RUN_OPTS handling to quote arguments properly (e91a168)

v1.15.4 (2021-11-05)


  • shell: Fix invalid generated binary shims (#213) (5301003)

v1.15.3 (2021-11-05)


  • shell: Improve binary shim by generating temporary file (#211) (22046e9)

v1.15.2 (2021-10-18)


  • 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)


  • fixuid: Enhance verbosity and user messages (3668379)

v1.15.0 (2021-10-14)


  • Drop ubuntu 16.04 support for binary (7335a5c)
  • fixuid: Use docker cli instead of docker-py (cba2394)


  • fixuid: Use fixuid v0.5.1 (0fd82e1)

v1.14.0 (2021-08-04)


  • jsonnet: Generate compose network name without underscore (4b6c139)


  • 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)


  • run: Use avoid_stdout in ddb run command (#204) (589cb13)


  • binaries: Add DDB_RUN_OPTS note (5425efe)

v1.13.2 (2021-03-24)


  • binary: Binary is now registered again when condition is changed (fd5230b)


  • binaries: Typo in docker compose command (88ab7b0)

v1.13.1 (2021-02-24)


  • self-update: Fix permission issues with self-update command (#146) (4cd8bce)


  • faq: Add ddb-linux-older-glic edition note (895742b)

v1.13.0 (2021-02-24)


  • core: Add release_asset_name to customize asset to download on update (e2b3324)


  • 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)


  • config: Add more capabilities to config command (89d20d6)


  • jsonnet: Remove client_port=9000 for xdebug3 configuration (d8ca959)
  • jsonnet: Set log_level=0 to xdebug3 configuration (689efb0)

v1.11.0 (2021-02-17)


  • run: Add DDB_RUN_OPTS support to add docker-compose options on ddb run (b1aca49)


  • core: Disable core.check_updates after running self-update command (6274317)

v1.10.3 (2021-02-15)


  • alpine: Add Alpine Linux support (bcf04b5)

v1.10.2 (2021-02-15)


  • 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)


  • core: Use new binary names for self-update (56fc5ab)

v1.10.0 (2021-02-15)


  • jsonnet: Add mount options to mount named volumes inside project directory (401c9bd)
  • config: Add core.check_updates configuration (3a779a4)


  • traefik: Stop using deprecated properties internally (d3f06d8)
  • selfupdate: Display detected binary path on permission error (c0cfe91)

v1.9.2 (2021-02-09)


  • 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)


  • jsonnet: Add missing ddb.feature.jsonnet.docker package in exe version (5253802)

v1.9.0 (2021-02-05)


  • jsonnet: Add port conflict solver as jsonnet postprocessor (0c7bd16)

v1.8.1 (2021-02-05)


  • 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)


  • config: Enhance config command output and add options (#189) (02dbcb5)
  • binary: Add global and entrypoint options to binaries (#185) (61f973c)


  • 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)


  • Add missing extensions in binary bundle (#187) (63febce)

v1.7.2 (2021-02-03)


  • jinja: Fix extra EOL issue when deprecated property are used (13c2d0e)

v1.7.1 (2021-02-03)


  • gitignore: Sort gitignore entries to avoid conflicts (071fedd)

v1.7.0 (2021-02-03)


  • 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)


  • 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)


v1.6.1 (2021-01-20)


  • migration: Add boolean value support fr docker.reverse_proxy.type migration (#184) (682f23f)

v1.6.0 (2021-01-19)


  • jinja: Add configuration options to jinja Environment (#181) (092d9d0)
  • scope: Refactor configuration schemas with autofix (#164 #179) (10b7a72)


  • config: Fix deprecations warnings and backward compatibility (6ab20c2)


  • usage: Update usage output in docs (4ebb752)

v1.5.1 (2021-01-15)


  • binary options: Fix an issue introduced by #141 (f404353)

v1.5.0 (2021-01-14)


  • 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)


  • 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 (#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)


  • 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)


  • 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)


  • 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)


  • fixuid: Add Dockerfile comments to disable or customize fixuid automic configuration (e855efc)


  • file: File scan now yield directories so you can use permission on directories (eb232d8)
  • file: Fix recursive=False parameter in FileWalker (c81fd76)


  • setuptools: Update python versions in classifiers (4012cbf)

v1.4.1 (2020-12-17)


  • core: Fix self-update command (843cf67)

v1.4.0 (2020-12-17)


  • 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)


  • 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)


  • version: Version check now removes "v" first character from tag (#129) (71a3567)

v1.3.0 (2020-12-16)


  • 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)


  • 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)


  • 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 <binary>" 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 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

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docker-devbox-ddb-1.15.6.tar.gz (4.9 MB view hashes)

Uploaded source

Built Distribution

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page