Saya mengembangkan terutama menggunakan Visual Studio pada Windows. Masalahnya adalah bahwa setelah beberapa saat Windows macet dan saya dihadapkan dengan kebutuhan untuk menginstal ulang Windows. Demikian pula beralih ke mesin baru adalah masalah.
Menginstal ulang Windows menyakitkan karena lingkungan pengembangan saya memiliki banyak dependensi (seperti file konfigurasi MSBuild tambahan, ekstensi VS, npm, Java dll). Saya tidak membayangkan saya sendirian dalam memiliki sistem yang kompleks, dan memasangnya kembali mungkin akan memakan waktu satu hari minimum.
Saya tidak benar-benar menggunakan Docker, tetapi secara teori sepertinya saya bisa mengatur lingkungan dev saya di Windows Container dan kemudian mengirimkannya (mis. Salin ke laptop saya, masukkan instalasi Windows baru) dan itu seharusnya tidak menyakitkan .
Apakah yang saya gambarkan mungkin? Apakah ada kelemahan, seperti kinerja, keandalan? Gotcha lainnya?
Jawaban:
Ini bukan masalah yang tidak biasa, tetapi Docker bukan alat yang tepat untuk menyelesaikannya. Kontainer secara umum (termasuk Docker) dimaksudkan untuk menyediakan runtime aplikasi untuk satu proses , seperti server web, bukan untuk skenario multi-proses seperti lingkungan dev. Di dapat dilakukan, tetapi bukan solusi yang sangat elegan.
Pendekatan yang lebih baik (dan lebih umum) adalah membuat VMs baik melalui hypervisor tradisional seperti VirtualBox atau Hyper-V (karena Anda menggunakan Windows). Alur kerja yang khas adalah:
Vagrant juga merupakan alat yang fantastis untuk melakukan banyak hal di atas dengan cara yang lebih terstruktur.
Manfaat sampingan dari semua ini adalah bahwa Anda sekarang memiliki lingkungan terstandarisasi yang dapat dibagikan dengan seluruh tim Anda, menyelamatkan semua orang dari upaya tersebut. Ini sangat bagus untuk orang baru yang naik dengan cepat.
Kembali ke pertanyaan awal Anda, Docker tidak benar-benar dimaksudkan untuk ini, tetapi jika Anda memiliki lingkungan dev yang cukup kecil (katakanlah PHP di Linux), Anda bisa melakukannya dalam wadah, dan manfaatnya akan menjadi gambar yang jauh lebih kecil (berpotensi di bawah 100MB vs banyak GB untuk Windows VM dengan disk virtual).
sumber
tidak dalam satu wadah buruh pelabuhan tetapi ya dalam wadah buruh pelabuhan.
Meskipun Anda dapat - secara teoritis - merakit seluruh lingkungan dev Anda di dalam satu wadah tunggal, buruh pelabuhan tidak dimaksudkan untuk melakukan ini.
Alih-alih, Anda harus menggunakan setiap layanan ke dalam wadah terpisah, menggunakan komposisi buruh pelabuhan , mengelola seluruh infrastruktur Anda dalam satu file tunggal, di mana setiap layanan akan memiliki file log, ruang pengguna, jaringan, dll.
Biarkan saya memberi Anda sebuah contoh, ini adalah konsep saya
docker-compose.yml
Ada proxy nginx (myproxy), dua database postgres serupa (mydb1 dan 2), server aplikasi web java lama (www), wadah java jetty yang menyediakan layanan web sisanya dan akhirnya wadah postfix SMTP yang sangat sederhana.
Semuanya dimulai - biasanya :) - dengan
docker-compose up
, baik pada mesin dev saya atau dalam produksi; file log dikumpulkan menjadi satu file yang mudah dibaca dan dimungkinkan untuk mereplikasi secara lokal hampir setiap fungsionalitas dengan jaminan bahwa, jika berfungsi pada laptop saya, itu akan berfungsi.sumber
Saya menggunakan VM VirtualBox untuk hal semacam ini.
Portabilitas memiliki lingkungan dev Anda dalam sebuah wadah sangat mudah, tetapi hal yang sangat menyenangkan adalah bahwa saya dapat memotretnya sebelum ada upaya peningkatan, dan jika saya mengacaukannya, tidak ada masalah untuk mundur dan memulai lagi.
Saya juga merasa terbantu untuk melakukan ini karena saya sering bekerja dengan banyak versi hal-hal seperti Qt, dan saya tidak merasa ingin mencari tahu bagaimana membuat kedua versi itu hidup berdampingan - sebagai gantinya, saya hanya meletakkannya di berbagai VM dan Saya tidak perlu khawatir tentang interaksi karena saya menginstal sesuatu yang salah.
sumber