"docker-compose" vs "docker compose"

So I just finished an install of Umbrel on Debian Bullseye 11.2. Ran into some trouble with docker-compose, using Compose 2.2.3.

I’m not super familiar with Docker, so I don’t know if this is a recent change with Compose or what, but I noticed that running something like “docker-compose version” would return that “docker-compose” was not a valid command.

However, “docker compose version” returned the running version as expected (no dash).

I was able to correct the issues with running ./scripts/start because of this by altering all references to running “docker-compose” with “docker compose”. Also commented out the dependency checks for now in all of those scripts since I knew the rest was already good, otherwise it would tell me “docker-compose must be installed”.

After those changes, it started and is now syncing the blockchain. I have other things I need to figure out still, but the fact it is running at the moment and accessible gives me hope.

I’m just putting this out there for anyone else experiencing this issue, I know the Linux install is currently in the experimental phase so considering that, the whole thing was actually quite smooth.

Be careful! When you install docker compose for Debian you need to choose dedicated repositories for Debian NOT Ubuntu!
Re-do all the process and select the correct ones, otherwise you cannot install umbrel or make it run on that machine.

You can also update the check_dependencies function to support arguments passed to it with spaces in them.

check_dependencies () {
  for cmd in "$@"; do
    if ! bash -c "command -v $cmd" >/dev/null 2>&1; then
      echo "This script requires \"${cmd}\" to be installed"
      exit 1
    fi
  done
}

Then, you’ll need to update every instance of check_dependencies to look like this.

check_dependencies "readlink" "dirname" "ip" "docker" "docker compose"

To easily find instances of check_dependencies or docker-compose, use grep.

grep -r "docker-compose"

You’ll have to modify the check_dependencies function and each time it’s called in the app, configure, and start scripts.

You’ll also need to check other scripts for calls to docker-compose and replace it with docker compose like in /scripts/app and /scripts/stop. Probably a good idea to research if there’s a way to create an alias for docker compose using docker-compose so you don’t have to do that, but so far it’s working for me and Bitcoin app is installed.

When attempting to update Umbrel, I learned that it overwrites the modified files above. I’m currently researching a way to update without it modifying those files.

A better solution would be to somehow link “docker-compose” with “docker compose”.