Pertanyaan Docker: Cara live sync folder host dengan folder kontainer?


Saya sedang mengerjakan situs web yang diberdayakan oleh Node. Jadi saya telah membuat Dockerfile sederhana yang menambahkan file situs saya ke FS kontainer, menginstal Node dan menjalankan aplikasi ketika saya menjalankan penampung, memperlihatkan port pribadi 80.

Tetapi jika saya ingin mengubah file untuk aplikasi itu, saya telah membangun ulang gambar kontainer dan menjalankannya kembali. Itu membutuhkan beberapa detik.

Apakah ada cara mudah untuk memiliki semacam "live sync", seperti NFS, untuk memiliki file aplikasi sistem host saya sinkron dengan yang dari wadah yang berjalan?

Dengan cara ini saya hanya perlu meluncurkan ulang agar perubahan berlaku, atau bahkan lebih baik, jika saya menggunakan sesuatu seperti itu supervisor, itu akan dilakukan secara otomatis.


32
2017-09-18 17:06


asal


Jawaban:


Anda dapat menggunakan volume untuk melakukan ini. Anda memiliki dua opsi:

  1. Volume yang dikelola Docker:

    docker run -v /src/path nodejsapp
    docker run -i -t -volumes-from <container id> bash
    

File yang Anda edit di penampung kedua akan memperbarui yang pertama.

  1. Volume direktori host:

    docker run -v `pwd`/host/src/path:/container/src/path nodejsapp
    

Perubahan yang Anda lakukan pada host akan memperbarui penampung.


37
2017-09-18 18:56



Jika Anda berada di bawah OSX, pangsa volume semacam itu bisa menjadi sangat lambat, terutama dengan aplikasi berbasis simpul (banyak file). Untuk boneka ini, http://docker-sync.io dapat membantu Anda memiliki sinkronisasi volume-share seperti, tanpa menggunakan pembagian volume, ini biasanya mempercepat kecepatan baca / tulis kontainer Anda dari direktori-kode dari 50-80 kali, tergantung pada apa yang Anda gunakan.

Untuk melihat kinerja https://github.com/EugenMayer/docker-sync/wiki/4.-Performa dan untuk contoh mudah bagaimana menggunakannya melihat boiler https://github.com/EugenMayer/docker-sync-boilerplate untuk kasus Anda contoh serempak https://github.com/EugenMayer/docker-sync-boilerplate/tree/master/unison adalah yang Anda perlukan untuk NFS seperti sinkronisasi


1
2017-08-11 07:28