Docker-compose.yml içinde adlandırılmış bir birim için ana bilgisayarda bir yol ayarlama


87

Aşağıdaki örnek dbdata adlı birim oluşturur ve db hizmeti içinde buna referans verir :

version: '2'
services:
  db:
    image: mysql
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:
    driver: local

( https://stackoverflow.com/a/35675553/4291814 adresinden )

Birim varsayılanlarının yolunu görebiliyorum:

/var/lib/docker/volumes/<project_name>_dbdata

Sorum, dbdatabirim için ana bilgisayardaki yolu nasıl yapılandıracağım ?


Daha yeni / uygun yöntem için cevabımı görün -> stackoverflow.com/a/61743638/5079799
FreeSoftwareServers

Yanıtlar:


76

localBirim sürücüsü ile isteğe bağlı bağları kullanma yeteneği gelir; bir bağlama montajı kullanarak tam olarak bunu elde edebilirsiniz.

İçine monte alır adlandırılmış sesini ayarlamak için /srv/db-data, senin docker-compose.ymlşu şekilde görünecektir:

version: '2'
services:
  db:
    image: mysql
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '/srv/db-data'

Oluşturma dosyası biçiminin 2. sürümü ile test etmedim, ancak https://docs.docker.com/compose/compose-file/compose-versioning/#version-2 çalışmaması gerektiğini göstermiyor.

Ayrıca Windows'ta da test etmedim ...


3
Bundan çok daha basit sözdizimine sahip bir bağlama bağlantısı kullanabilirsiniz: birimler: - ./dbdata:/var/lib/mysql. Bağlama bağlantısı ile ilgili tek 'sorun', adlandırılmış birimden farklı olarak kapsayıcı içeriklerini ana bilgisayara otomatik olarak kopyalamamasıdır. docs.docker.com/compose/compose-file/#volumes
mikey

13
OP , bir bağlama bağlantısının en kolay şekilde nasıl kullanılacağını değil , özellikle adlandırılmış birimleri sordu . Adlandırılmış bir birim için yolu yapılandırmak istiyorsanız, bunu yukarıda gösterildiği gibi bir bağlama montajı ile gerçekleştirebilirsiniz. Adlandırılmış birimleri kullanmak, bunları docker-compose.yml dosyanızda kolayca yeniden kullanabilmenizin avantajına sahiptir.
Christian Ulbrich

1
@mikey Buraya ilk yorumunuz hakkında netlik isteyen bir soru gönderdim: stackoverflow.com/questions/65176940/… . Cevap verirseniz çok sevinirim. Teşekkürler.
thanks_in_advance

1
@thanks_in_advance - yenilmiş gibi görünüyor! tyvm beni etiketlemek için
mikey

1
@mikey, yorumlar yoluyla oradaki tartışmaya eklemekten çekinmeyin.
thanks_in_advance

9

Adlandırılmış birimlerin konumu docker tarafından yönetilir; konumu kendiniz belirtmek istiyorsanız, bir ana bilgisayar dizinini "bağlayabilir" veya bir yol belirlemenize izin veren bir birim eklentisi kullanabilirsiniz.

Son zamanlarda yazdığım başka bir cevapta bazı ayrıntıları bulabilirsiniz; https://stackoverflow.com/a/36321403/1811501


1
Aslında localdocker ile birlikte sağlanan hacim eklentisini kullanmanız yeterlidir; bir örnek için cevabıma bakın.
Christian Ulbrich

-2

İtibariyle docker-compose v3.2aşağıdaki gibi size şimdi yapabilirsiniz:

Not: Çoğu, version: "3"en yeni / en son V3'ü kullanacağını düşündüğüm gibi v3.0, 3.2kullanmaz, aşağıdaki yapılandırma yöntemini kullanmak için minimumda belirtmeniz GEREKİR .

https://docs.docker.com/compose/compose-file/#volumes

version: "3.2"
services:
  db:
    image: postgres:latest
    volumes: 
      - type: volume
        source: /opt/db/vols/dbdata
        target: /var/lib/postgresql/data
        volume:
          nocopy: true



volumes:
   dbdata:

Not:

Adlandırılmış birimler, gösterildiği gibi üst düzey birimler anahtarının altında listelenmelidir.


Cevabınızı @FreeSoftwareServer anlamadıysam özür dilerim, buradaki soru "Adlandırılmış birimleri ana klasörle nasıl eşleyebiliriz" sorusudur?
Dheeraj Kumar

Cevabımı basitleştirmeye çalıştım, belki özel sorununuzla yeni bir soru başlatmaya çalıştım. @Dheeraj Kumar
FreeSoftwareServers

Hacmi olarak dbdatahizmete nasıl eşlenir db? @FreeSoftwareServers
Nam G VU

Kaynak hattı mı? @NamGVU Belki de spesifik sorununuzla ilgili yeni bir soru daha iyi olabilir
FreeSoftwareServers

Olumsuz oyları anlamıyorum? Bu, docker-compose.yml'de adlandırılmış bir birim için ana bilgisayarda bir yol belirlemenin çok daha temiz ve daha yeni bir yolu
FreeSoftwareServers
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.