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.

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

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.


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.


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

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

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

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

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

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

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


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.


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

dalam kasus saya itupip3 install --upgrade docker-compose
Mariyo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.