Saya sudah meneliti sebelum bertanya di sini, tetapi semua jawaban membawa saya pada kesimpulan yang sama:
- Bangun tumpukan Docker Compose Anda secara lokal
- Tandai dan dorong gambar ke registri (baik yang pribadi atau publik seperti Docker Hub)
- Dorong tumpukan ke gerombolan menggunakan
docker stack deploy --compose-file docker-compose.yml stackdemo
- Dari sini, tumpukan mengambil dan "menarik" gambar dari registri dan menjalankan container
Apakah tidak ada cara langsung untuk membuat skenario berikut (menurut saya masuk akal) bekerja dengan lancar?
- Manajer gerombolan Docker memiliki akses (kunci SSH) untuk menarik proyek dari Git.
- Ini secara berkala menarik proyek dan membangunnya "secara lokal" menggunakan
docker-compose up
- Ketika pembangunan berhasil (kontainer sudah siap), ia mendorong tumpukan ke gerombolan menggunakan
docker stack deploy
, menyebarkan gambar ke semua node pekerja. - Dengan cara itu, "kode sumber" asli hanya diketahui oleh Node Manajer dan hanya dia yang memiliki akses langsung ke repositori Git.
Mempertahankan registri (atau membayar untuk cloud), sepertinya merupakan kerugian besar dalam menggunakan Docker dalam Mode Swarm.
Catatan tambahan: Saya sudah mencoba pendekatan menerapkan registri sebagai layanan dalam tumpukan dan memberi tag + mendorong gambar ke 127.0.0.1/myimage
tetapi hal itu menyebabkan serangkaian masalah tersendiri - misalnya. fakta bahwa node pekerja yang tidak menjalankan instance container Registry, tidak memiliki akses untuk menarik image (registrasi perlu direplikasi ke semua node).