Bu cevap, docker-compose sürüm 2 içindir ve ayrıca sürüm 3'te de çalışır
Depends_on komutunu kullanırken verilere erişmeye devam edebilirsiniz.
Docker dokümanlar Docker Compose ve Django'ya bakarsanız, yine de veritabanına şu şekilde erişebilirsiniz:
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
Links ve depends_on arasındaki fark nedir?
links:
Bir veritabanı için kapsayıcı oluşturduğunuzda, örneğin:
docker run -d --name=test-mysql --env="MYSQL_ROOT_PASSWORD=mypassword" -P mysql
docker inspect d54cf8a0fb98 |grep HostPort
Ve bulabilirsiniz
"HostPort": "32777"
Bu, veritabanını localhost bağlantı noktası 32777'den (kapsayıcıda 3306) bağlayabileceğiniz anlamına gelir, ancak kapsayıcıyı her yeniden başlattığınızda veya kaldırdığınızda bu bağlantı noktası değişecektir. Bu nedenle, her zaman veritabanına bağlanacağınızdan ve hangi bağlantı noktasının olduğunu bilmek zorunda olmadığınızdan emin olmak için bağlantıları kullanabilirsiniz.
web:
links:
- db
depends_on:
Giorgio Ferraris Docker-compose.yml'den güzel bir blog buldum: V1'den V2'ye
Docker-compose V2 dosyalarını yürüttüğünde, dosyada tanımlanan tüm kaplar arasında otomatik olarak bir ağ oluşturur ve her kap sadece docker-compose.yml dosyasında tanımlanan adları kullanarak hemen diğerlerine başvurabilir.
Ve
Artık bağlantılara ihtiyacımız yok; bağlantılar, db kapsayıcımız ve web sunucusu kapsayıcımız arasında bir ağ iletişimi başlatmak için kullanıldı, ancak bu zaten docker-compose tarafından yapıldı
Güncelleme
İki etkisi olan hizmetler arasında açık bağımlılık:
docker-compose up
hizmetleri bağımlılık sırasına göre başlatacaktır. Aşağıdaki örnekte, db ve redis web'den önce başlatılacaktır.
docker-compose up SERVICE
SERVICE'in bağımlılıklarını otomatik olarak içerecektir. Aşağıdaki örnekte, docker-compose up web de db ve redis oluşturur ve başlatır.
Basit bir örnek:
version: '2'
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
Not: depends_on, web başlatılmadan önce db ve redis'in "hazır" olmasını beklemez - yalnızca başlatılıncaya kadar. Bir hizmetin hazır olmasını beklemeniz gerekiyorsa, bu sorun ve çözme stratejileri hakkında daha fazla bilgi için Başlangıç sırasını denetleme konusuna bakın.
--link
Bayrak şimdi Docker bir kullanımdan kaldırılmış eski bir özelliktir ve dokümantasyon "Bu sonuçta kaldırılmış olabilir" düşündürmektedir Docker: Legacy konteyner bağlantıları . Docker ağları özelliğini veya docker oluşturma yöntemini kullanmamanız önerilir . Bunun burada bu özelliği öğrenen herkes için yararlı olacağını düşündüm.