Menurut dokumentasi file penulisan Docker Compose :
depends_on
- Ketergantungan ekspres antar layanan.links
- Tautan ke kontainer di layanan lain dan juga mengekspresikan ketergantungan antara layanan dengan cara yang sama seperti depend_on .
Saya tidak mengerti tujuan menghubungkan ke wadah lain sehingga perbedaan antara dua opsi masih tampak sulit bagi saya.
Akan lebih mudah jika ada contoh, tetapi saya tidak dapat menemukannya.
Saya perhatikan, ketika saya menautkan wadah B dengan wadah A maka wadah B akan "pingable" di dalam cangkang wadah A.
Saya berlari ping B
di dalam wadah A bash
dan mendapat hasil seperti ini (hanya untuk referensi, gambar dari Internet)
docker
docker-compose
dockerfile
itu jef
sumber
sumber
--link
flag sekarang fitur warisan ditinggalkan dari Docker dan dokumentasi menunjukkan "Ini mungkin akhirnya akan dihapus" Docker: Legacy link kontainer . Disarankan untuk tidak menggunakan fitur jaringan Docker atau metode penulisan docker. Saya pikir ini akan membantu siapa pun di sini yang mempelajari fitur ini.Jawaban:
Pos perlu diperbarui setelah
links
opsi tersebut tidak digunakan lagi.Pada dasarnya,
links
tidak diperlukan lagi karena tujuan utamanya, membuat wadah dapat dijangkau oleh orang lain dengan menambahkan variabel lingkungan, dimasukkan secara tersirat dengannetwork
. Ketika kontainer ditempatkan di jaringan yang sama, mereka dapat dijangkau oleh satu sama lain menggunakan nama wadah mereka dan alias lainnya sebagai tuan rumah.Sebab
docker run
,--link
juga sudah usang dan harus diganti oleh jaringan kustom.depends_on
mengekspresikan urutan awal (dan urutan penarik gambar secara implisit), yang merupakan efek samping yang baiklinks
.sumber
Jawaban ini untuk versi docker-compose 2 dan ini juga berfungsi pada versi 3
Anda masih dapat mengakses data saat menggunakan depend_on.
Jika Anda melihat dokumen buruh pelabuhan Docker Compose dan Django , Anda masih dapat mengakses database seperti ini:
Apa perbedaan antara tautan dan depend_on?
tautan:
Saat Anda membuat wadah untuk basis data, misalnya:
Dan Anda mungkin menemukan
Ini berarti Anda dapat menghubungkan database dari port host lokal Anda 32777 (3306 dalam wadah) tetapi port ini akan berubah setiap kali Anda me-restart atau menghapus wadah. Jadi Anda bisa menggunakan tautan untuk memastikan Anda akan selalu terhubung ke database dan tidak harus tahu port mana itu.
tergantung pada:
Saya menemukan blog yang bagus dari Giorgio Ferraris Docker-compose.yml: dari V1 ke V2
Dan
Memperbarui
tergantung pada
Ketergantungan ekspres antar layanan, yang memiliki dua efek:
docker-compose up
akan memulai layanan dalam urutan ketergantungan. Pada contoh berikut, db dan redis akan dimulai sebelum web.docker-compose up SERVICE
akan secara otomatis menyertakan dependensi SERVICE. Pada contoh berikut, web pembuat docker juga akan membuat dan memulai db dan redis.Contoh sederhana:
sumber
https://docs.docker.com/compose/compose-file/compose-versioning/
docker run
sini sama sekali tidak relevan, itu bukan bagaimana wadah akan dijalankan. Apa yang saya lewatkan?docker run
Contoh saya ingin menunjukkan mengapa kita perlu menggunakan depend_on atau tautan alih-alih menuliskan nomor port dengan hard-code. Hanya karena jika Anda tidak menentukannya, itu berubah setiap waktu. Saya pikir ini akan membuat orang mengerti lebih banyak tentang depend_on atau tautan.[Pembaruan Sep 2016]: Jawaban ini ditujukan untuk file komposisi buruh pelabuhan v1 (seperti yang ditunjukkan oleh sampel file penulisan di bawah). Untuk v2, lihat jawaban lain oleh @Windsooon.
[Jawaban asli]:
Cukup jelas dalam dokumentasi.
depends_on
memutuskan ketergantungan dan urutan pembuatan wadah danlinks
tidak hanya melakukan ini, tetapi jugaMisalnya, dengan asumsi
docker-compose.yml
file berikut :Dengan
links
, kode di dalamnyaweb
akan dapat mengakses database menggunakandb:5432
, dengan asumsi port 5432 terpapar dalamdb
gambar. Jikadepends_on
digunakan, ini tidak akan mungkin, tetapi urutan startup wadah akan benar.sumber
links
ataudepends_on
atau salah satu dari mereka ok?docker-compose.yml
Kegunaandepends_on
dan hal-hal saya saat ini tampaknya berfungsi dengan baik. :)name:port
makadepends_on
ok.db
dalamweb
database hostname menggunakan.