How to upgrade docker-compose to latest version

后端 未结 12 2209
遇见更好的自我
遇见更好的自我 2020-12-23 09:05

I have installed docker-compose using the command

sudo apt install docker-compose

It installed docker-compose version 1.8.0 and build unknown

相关标签:
12条回答
  • 2020-12-23 09:16

    The easiest way to have a permanent and sustainable solution for the Docker Compose installation and the way to upgrade it, is to just use the package manager pip with:

    pip install docker-compose
    

    I was searching for a good solution for the ugly "how to upgrade to the latest version number"-problem, which appeared after you´ve read the official docs - and just found it occasionally - just have a look at the docker-compose pip package - it should reflect (mostly) the current number of the latest released Docker Compose version.

    A package manager is always the best solution if it comes to managing software installations! So you just abstract from handling the versions on your own.

    0 讨论(0)
  • 2020-12-23 09:16

    On ubuntu desktop 18.04.2, I have the 'local' removed from the path when using the curl command to install the package and it works for me. See above answer by Kshitij.

    0 讨论(0)
  • 2020-12-23 09:22

    Here is another oneliner to install the latest version of docker-compose using curl and sed.

    curl -L "https://github.com/docker/compose/releases/download/`curl -fsSLI -o /dev/null -w %{url_effective} https://github.com/docker/compose/releases/latest | sed 's#.*tag/##g' && echo`/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
    
    0 讨论(0)
  • 2020-12-23 09:22

    After a lot of looking at ways to perform this I ended up using jq, and hopefully I can expand it to handle other repos beyond Docker-Compose without too much work.

    # If you have jq installed this will automatically find the latest release binary for your architecture and download it
    curl --silent "https://api.github.com/repos/docker/compose/releases/latest" | jq --arg PLATFORM_ARCH "$(echo `uname -s`-`uname -m`)" -r '.assets[] | select(.name | endswith($PLATFORM_ARCH)).browser_download_url' | xargs sudo curl -L -o /usr/local/bin/docker-compose --url
    
    0 讨论(0)
  • 2020-12-23 09:24

    If the above methods aren't working for you, then refer to this answer: https://stackoverflow.com/a/40554985

    curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" > ./docker-compose
    sudo mv ./docker-compose /usr/bin/docker-compose
    sudo chmod +x /usr/bin/docker-compose
    
    0 讨论(0)
  • 2020-12-23 09:25

    Based on @eric-johnson's answer, I'm currently using this in a script:

    #!/bin/bash
    compose_version=$(curl https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)
    output='/usr/local/bin/docker-compose'
    curl -L https://github.com/docker/compose/releases/download/$compose_version/docker-compose-$(uname -s)-$(uname -m) -o $output
    chmod +x $output
    echo $(docker-compose --version)
    

    it grabs the latest version from the GitHub api.

    0 讨论(0)
提交回复
热议问题