Skip to content

Instantly share code, notes, and snippets.

@Maysora
Created March 25, 2025 08:58
Show Gist options
  • Save Maysora/c3c3e3f52b6fc85f20ca77a8881512b7 to your computer and use it in GitHub Desktop.
Save Maysora/c3c3e3f52b6fc85f20ca77a8881512b7 to your computer and use it in GitHub Desktop.
override compose file from parent directory
#!/bin/bash
compose_files="docker-compose.yml docker-compose.yaml compose.yml compose.yaml"
override_files="docker-compose.override.yml docker-compose.override.yaml compose.override.yml compose.override.yaml"
parameters="$@"
added_parameters=""
dir_prefix="./"
traversal_counter=4 # search 4 dir up
compose_found=false
while [[ "`readlink -f $dir_prefix`" != "/" && $traversal_counter -ge 0 ]]; do
# echo "check: `readlink -f $dir_prefix` counter: $traversal_counter"
for compose_file in $compose_files; do
if [ -f $dir_prefix$compose_file ]; then
added_parameters="$added_parameters -f $dir_prefix$compose_file"
traversal_counter=-1
compose_found=true
# echo "found $dir_prefix$compose_file"
fi
done
if ! $compose_found; then
# echo "not found at $dir_prefix"
((traversal_counter--))
dir_prefix="${dir_prefix}../"
fi
done
if $compose_found; then
traversal_counter=1 # search 1 dir up
override_found=false
while [[ "`readlink -f $dir_prefix`" != "/" && $traversal_counter -ge 0 ]]; do
# echo "check: `readlink -f $dir_prefix` counter: $traversal_counter"
for override_file in $override_files; do
if [ -f $dir_prefix$override_file ]; then
added_parameters="$added_parameters -f $dir_prefix$override_file"
traversal_counter=-1
override_found=true
# echo "found $dir_prefix$override_file"
fi
done
if ! $override_found; then
# echo "not found at $dir_prefix"
((traversal_counter--))
dir_prefix="${dir_prefix}../"
fi
done
fi
# echo docker compose $added_parameters $parameters
docker compose $added_parameters $parameter
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment