Dengan Docker Compose v1.6.0 +, sekarang ada sintaks file baru / versi 2 untuk docker-compose.yml
file tersebut. Perubahan termasuk kunci tingkat atas yang terpisah bernama volumes
. Ini memungkinkan untuk "memusatkan" definisi volume di satu tempat.
Apa yang saya coba lakukan adalah memberi nama volume di sana dan memiliki beberapa jalur referensi volume tunggal pada disk host lokal saya. Berikut ini adalah contoh, melemparkan pengecualian dengan Traceback
yang berakhir dengan
AttributeError: 'list' object has no attribute 'items'
Contoh docker-compose.yml
:
version: '2'
services:
db:
image: postgres
volumes:
- database:/var/lib/postgres/data
php:
image: php-fpm:5.6
volumes:
- phpconf:/etc/php/conf.d
namedvolume:
container_name: namedvolume
build: ./Docker/Testvolume
volumes:
- ./Docker/Testvolume/shareme
volumes:
database:
- ./Docker/Postgres/db:ro
- ./Docker/Postgres/ini
phpconf:
- ./Docker/PHP-FPM/conf
singledir: ./Docker/foo
completemap: ./Docker/bar:/etc/service/conf.d
- namedvolume:/etc/service/conf.d # < this was a separate attempt w/o the other keys
… ?
Sejauh ini saya membaca semua referensi konfigurasi Docker Compose master
doc- volume Volume, Docker Compose docs Volume / Volume-Driver referensi dan melihat melalui contoh GitHub untuk menemukan sintaks yang benar yang diharapkan. Sepertinya tidak ada yang sudah menggunakan itu (GitHub) dan dokumentasinya masih jauh dari lengkap (docker.com). Saya juga mencoba membangun volume terpisah sebagai service
dan referensi volumes
, tapi itu tidak berhasil juga. Adakah ide tentang bagaimana sintaksis ini seharusnya terlihat?
sumber
$(docker volume ls |awk '{print $2}')
Anda dapat menggunakan$(docker volume ls -q)
Tidak hanya ini sederhana, tidak mencetak "VOLUME" pada baris pertama.volumes_from
adalah mewarisi daftar volume dari wadah lain. Untuk menggunakan volume bernama, Anda menggunakan sintaks tingkat layanan- NAME:DEST
, dan mengatur lintasan divolumes
kunci tingkat atas . Apa yang dilakukan contoh ini (pada saat penulisan ini) adalah membuat volume standar selain volume bernama, dan volume bernama tidak digunakan.Cara saya memahaminya, Anda dapat menggunakan bagian global
volumes:
untukVolume di bagian global akan dibuat secara otomatis kecuali Anda tentukan
external: true
. Anda masih perlu memberi tahu setiap layanan divolumes:
bagian mana untuk memasang volume itu.Berikut ini contoh yang sangat sederhana:
volumes:
Entri global untukproject
akan menyebabkan volume bernamaproject
dibuat. Ini kemudian akan dipasang sebagai/bar
dalam layanan satu, dan seperti/foo
dalam layanan dua. Kedua layanan berbagi data volume dan dapat membaca / menulisnya.Saya tidak berpikir bahwa apa yang Anda coba lakukan adalah mungkin (mengubah beberapa jalur menjadi satu volume, dan dengan r / w flag yang berbeda). Jika memungkinkan, maka mungkin dengan menemukan cara untuk membuat volume bernama dengan properti ini melalui beberapa cara lain dan kemudian menambahkannya sebagai volume eksternal:
sumber
project
dan rujuk sebagaiproject:/bar
, di manaproject
sebenarnya jalur didefinisikan?project:
alias? Bagaimana buruh pelabuhan tahu jika saya ingin berbagi, katakan./some_folder/some_subfolder/yet_another_subfolder
kepadaone:
dantwo:
wadah?Lihat Versi 2 misalnya, juga referensi konfigurasi volume :
Contoh saya: (Versi 1)
sumber
Version 2
bagian dokumen)volumes
kunci tingkat atas yang terpisah - yang tidak saya lakukan, karena itu pertanyaannya. Apa yang saya tidak dapatkan adalah apa yangdocker-compose.yml
bagian dengan sintaks versi 1 dimaksudkan untuk menjelaskan saya.Saya pikir apa yang Anda coba lakukan kira-kira sama dengan yang terlihat di sini . Singkatnya: saat ini tidak memungkinkan untuk membuat volume bernama yang merujuk ke titik pemasangan pada host. Anda dapat membuat volume bernama untuk berbagi data antara kontainer, tetapi data hanya akan ada di volume itu sendiri, dan menghilang ketika Anda menghapus volume.
Volume bernama pemasangan telah diusulkan , tetapi sayangnya itu tidak akan ditambahkan ke inti dalam waktu dekat. Namun, dimungkinkan dengan menggunakan plugin buruh pelabuhan yang bernama local-persist .
sumber