Netskin Logo

Mini-Tip: Refactor Docker Compose configs

by Tom Rothe on 13.07.2023

Docker Compose is a great tool to deploy a development environment. By defining a docker-compose.yml, we can specify which services are needed and how they need to interact. A new developer can just check out the project, run docker compose up and it will orchestrate all required containers automatically.

Sometimes it is necessary that services share certain configurations. For example, it might be useful if two services share the same environment variables or volumes. This might lead to duplication, and we all know how it is: when we need to make a super-quick change, we might forget to change the other occurrence, and 5 minutes wasted on debugging…

In order to DRY up the docker-compose.yml, we can use two concepts:

Here is an example of a config file which has been DRY’ed up using this technique:

version: '3.4'

x-env: &devenv
  - EMAIL_HOST=smtp
  - OTHER_SETTING=jajaja

    command: bash -c 'sleep 100d'
      - 4000:3000

    image: superworker:15

Now there is no duplication. 🍾

Happy coding!

❮ File Uploads in Rails with the Shrine Gem
Auto-generate Plain-Text Emails ❯
Netskin Logo