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:
version: '2'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
Apa perbedaan antara tautan dan depend_on?
tautan:
Saat Anda membuat wadah untuk basis data, misalnya:
docker run -d --name=test-mysql --env="MYSQL_ROOT_PASSWORD=mypassword" -P mysql
docker inspect d54cf8a0fb98 |grep HostPort
Dan Anda mungkin menemukan
"HostPort": "32777"
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.
web:
links:
- db
tergantung pada:
Saya menemukan blog yang bagus dari Giorgio Ferraris Docker-compose.yml: dari V1 ke V2
Ketika docker-compose mengeksekusi file V2, maka secara otomatis akan membangun jaringan antara semua kontainer yang ditentukan dalam file, dan setiap kontainer akan segera dapat merujuk ke yang lain hanya menggunakan nama yang ditentukan dalam file docker-compose.yml.
Dan
Jadi kita tidak perlu tautan lagi; tautan digunakan untuk memulai komunikasi jaringan antara wadah db kami dan wadah server-web kami, tetapi ini sudah dilakukan oleh pembuat docker
Memperbarui
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:
version: '2'
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
Catatan: depend_on tidak akan menunggu db dan redis menjadi "siap" sebelum memulai web - hanya sampai mereka sudah dimulai. Jika Anda perlu menunggu layanan siap, lihat Mengontrol pesanan startup untuk lebih lanjut tentang masalah ini dan strategi untuk menyelesaikannya.
--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.