Skip to content

Instantly share code, notes, and snippets.

@Gems
Last active October 20, 2023 07:38
Show Gist options
  • Save Gems/a40d7eb45f46c82f990aa7e8845d7e7a to your computer and use it in GitHub Desktop.
Save Gems/a40d7eb45f46c82f990aa7e8845d7e7a to your computer and use it in GitHub Desktop.
A `docker-compose` wrapper for multiple configuration files with relative paths
#!/usr/bin/env bash
TMP_FILE=/tmp/docker-compose.$$.yaml
finish() {
rm ${TMP_FILE} ${TMP_FILE}.tmp 2>/dev/null
}
trap finish EXIT
compose-config() {
mv -f ${TMP_FILE} ${TMP_FILE}.tmp
docker-compose -f ${1} -f ${TMP_FILE}.tmp config >${TMP_FILE}
rm -f ${TMP_FILE}.tmp 2>/dev/null
}
args=()
files=()
while [ -n "$1" ]; do
case "$1" in
-f)
shift; files+=($1)
;;
*)
args+=($1)
;;
esac
shift
done
echo 'version: "3"' >${TMP_FILE}
for f in ${files[@]}; do
compose-config ${f}
done
docker-compose -f ${TMP_FILE} ${args[@]}
exit $?
@Gems
Copy link
Author

Gems commented Oct 20, 2023

Thank you for sharing your version @jneuendorf-i4h , I bet many people find it even more useful than the original one 👍🏻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment