Cara mengupgrade docker-compose ke versi terbaru

110

Saya telah menginstal docker-compose menggunakan perintah

sudo apt install docker-compose

Ini menginstal docker-compose versi 1.8.0 dan membangun tidak diketahui

Saya memerlukan versi terbaru dari buruh pelabuhan atau setidaknya versi 1.9.0

Adakah yang bisa memberi tahu saya pendekatan apa yang harus saya ambil untuk memutakhirkannya atau mencopot dan menginstal ulang versi terbaru.

Saya telah memeriksa situs buruh pelabuhan dan dapat melihat bahwa mereka merekomendasikan ini untuk menginstal versi terbaru '

sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

Tetapi sebelum itu, saya harus menghapus versi sekarang, yang dapat dilakukan dengan menggunakan perintah

sudo rm /usr/local/bin/docker-compose

tetapi ini hanya dapat digunakan jika penginstalan dilakukan menggunakan curl. Saya tidak yakin jika instalasi dilakukan dengan curl seperti yang saya gunakan

sudo apt install docker-compose

Tolong beritahu saya apa yang harus saya lakukan sekarang untuk menghapus dan menginstal ulang docker-compose.

Sam_2207
sumber

Jawaban:

145

Pertama, hapus versi lama :

Jika diinstal melalui apt-get

sudo apt-get remove docker-compose

Jika dipasang melalui curl

sudo rm /usr/local/bin/docker-compose

Jika dipasang melalui pip

pip uninstall docker-compose

Kemudian temukan versi terbaru pada halaman rilis di GitHub atau dengan menggulung API jika Anda telah jqmenginstal (terima kasih kepada dragon788 dan frbl untuk peningkatan ini):

VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | jq .name -r)

Terakhir, unduh ke lokasi favorit Anda yang dapat diakses $ PATH dan setel izin:

DESTINATION=/usr/local/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION
sudo chmod 755 $DESTINATION
Eric M. Johnson
sumber
2
coba perbarui jalur di / usr / local / bin / docker-compose dan kemudian jalankansudo chmod +x /usr/bin/docker-compose
Raj Kumar Goyal
2
Tidak perlu memindahkan file. The /usr/local/binpath harus dalam $PATHsudah. Tepat chmoddi tempatnya. Jawaban diperbarui untuk mencerminkan ini.
Emas
4
Anda mungkin ingin melakukannya sudo chmod 755 $DESTINATIONalih - alih hanya+x
Neo
2
Neo, tangkapan bagus. Saya biasanya hanya menyesuaikan perm untuk kebutuhan saya jika ada hal-hal lain yang mengatur bagaimana mereka membutuhkannya. Tetapi di sini kami mengunduh file baru. Menetapkan semua izin masuk akal.
Emas
2
@Rebar Bisakah Anda lebih spesifik tentang apa yang ingin Anda perbarui jalurnya? /usr/local/binadalah tempat yang cukup standar untuk meletakkan binari global yang tidak dikelola oleh sistem pengemasan. Jawabannya juga menyebutkan menentukan "lokasi favorit Anda yang dapat diakses $ PATH" yang menunjukkan penyesuaian jika Anda $PATHberbeda.
Eric M. Johnson
38

Cara termudah untuk mendapatkan solusi permanen dan berkelanjutan untuk instalasi Docker Compose dan cara untuk memutakhirkannya, adalah dengan hanya menggunakan pip manajer paket dengan:

pip install docker-compose

Saya sedang mencari solusi yang baik untuk masalah buruk "bagaimana meningkatkan ke nomor versi terbaru", yang muncul setelah Anda membaca dokumen resmi - dan hanya menemukannya sesekali - lihat saja pip docker-compose paket - itu harus mencerminkan (kebanyakan) nomor saat ini dari versi Docker Compose rilis terbaru .

Manajer paket selalu merupakan solusi terbaik dalam hal mengelola instalasi perangkat lunak! Jadi Anda hanya abstrak dari menangani versi Anda sendiri.

jonashackt
sumber
2
+1 jawaban bagus. Sebelumnya: Saya memiliki versi docker-compose: docker-compose versi 1.21.2, build a133471 Jadi untuk meningkatkan ke versi non-RC terbaru, saya menemukan ini berfungsi untuk meningkatkan: 1) apt install python-pipuntuk menginstal PIP kemudian pip install docker-composemenginstal yang terbaru dan kemudian untuk memeriksa versi: docker-compose --versionyang memberi saya: docker-compose versi 1.23.2, build 1110ad0
therobyouknow
pip install docker-composememberi saya "Persyaratan sudah terpenuhi: docker-compose" jadi saya harus melakukannya apt-get purge docker-composedan hash -d docker-composekemudian pip install docker-composemendapatkan docker-compose 1.24 di Ubuntu 18.04.
krubo
Setelah menginstal docker-compose by pip, saya mengalami kesalahan ini:ImportError: cannot import name 'Context'
Benyamin Jafari
Jadi, untuk mengatasi kesalahan ini, saya menginstal ulang dockerpaket olehpip
Benyamin Jafari
17

Berdasarkan jawaban @ eric-johnson, saat ini saya menggunakan ini dalam skrip:

#!/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)

itu mengambil versi terbaru dari api GitHub.

frbl
sumber
Saya mengalami kesalahan di baris ke-4 :) zsh: parse error near ''
Benyamin Jafari
baru saja mengujinya di sini, tetapi tampaknya berfungsi dengan baik (debian 10 dengan zsh). Anda yakin Anda menyalinnya dengan benar?
frbl
Coba kutip ganda pada URL karena terkadang shell bisa sedikit mengganggu.
dragon788
15

Jika metode di atas tidak berhasil untuk Anda, lihat jawaban ini: 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
kpratihast
sumber
3
Meskipun tautan ini mungkin menjawab pertanyaan, lebih baik menyertakan bagian penting dari jawaban di sini dan menyediakan tautan untuk referensi. Jawaban link saja bisa menjadi tidak valid jika halaman tertaut berubah. - Dari Ulasan
Luuklag
@Luuklag Memperbarui jawabannya. Terima kasih atas sarannya
kpratihast
Tampaknya menjadi opsi yang sangat lambat
TeoTN
11

Jika Anda mencoba sudo apt-get remove docker-composedan mendapatkan E: Unable to locate package docker-compose, coba metode ini:

Perintah ini harus mengembalikan hasil, untuk memeriksanya dipasang di sini:

ls -l /usr/local/bin/docker-compose

Hapus versi lama:

sudo rm -rf docker-compose

Unduh versi terakhir (periksa repo resmi: docker / compose / rilis ):

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

( ganti 1.24.0 jika perlu )

Terakhir, terapkan izin yang dapat dieksekusi ke biner:

sudo chmod +x /usr/local/bin/docker-compose

Periksa versi:

docker-compose -v
DependencyHell
sumber
5

Berikut adalah satu lagi cara untuk menginstal versi terbaru dari docker-compose menggunakan curl dan 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
Jakob Eriksson
sumber
2

gunakan ini dari baris perintah: sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Catat versi rilis terbaru

Terapkan izin yang dapat dieksekusi ke biner:

sudo chmod +x /usr/local/bin/docker-compose

Kemudian versi uji:

$ docker-compose --version
Md. Tanvir Rahaman
sumber
2

Saya mencoba menginstal docker-compose di "Ubuntu 16.04.5 LTS" tetapi setelah menginstalnya seperti ini:

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Saya mendapatkan:

-bash: / usr / local / bin / docker-compose: Izin ditolak

dan ketika saya menggunakannya dengan sudo saya mendapatkan:

sudo: docker-compose: perintah tidak ditemukan

Jadi, inilah langkah-langkah yang saya ambil dan selesaikan masalah saya:

sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose
ArminMz
sumber
1

Setelah banyak mencari cara untuk melakukan ini, saya akhirnya menggunakan jq, dan mudah-mudahan saya dapat mengembangkannya untuk menangani repo lain di luar Docker-Compose tanpa terlalu banyak pekerjaan.

# 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
dragon788
sumber
1

Jika Anda memiliki homebrew, Anda juga dapat menginstal melalui brew

$ brew install docker-compose

Ini adalah cara yang bagus untuk menginstal pada sistem Mac OS

Kristian Mandrup
sumber
1

Pada desktop ubuntu 18.04.2, saya menghapus 'lokal' dari jalur saat menggunakan perintah curl untuk menginstal paket dan itu berfungsi untuk saya. Lihat jawaban Kshitij di atas.

Harry
sumber
1

Jika Anda menginstal dengan pip, untuk mengupgrade Anda bisa menggunakan:

 pip install --upgrade docker-compose

atau seperti yang Mariyo nyatakan dengan pip3 secara eksplisit:

 pip3 install --upgrade docker-compose
Branimir Valentić
sumber
dalam kasus saya itupip3 install --upgrade docker-compose
Mariyo