Saya memiliki firasat bahwa buruh pelabuhan dapat sangat meningkatkan alur kerja webdev saya - tetapi saya belum cukup berhasil memahami cara mendekati proyek menambahkan buruh pelabuhan ke tumpukan.
Tumpukan perangkat lunak dasar akan terlihat seperti ini:
Perangkat lunak
Gambar Docker menyediakan tumpukan LAMP kustom
- Apache dengan beberapa modul
- MYSQL
- PHP
- Beberapa CMS, misalnya Silverstripe
GIT
Alur Kerja
Saya bisa membayangkan alur kerja terlihat seperti berikut ini:
Pengembangan
- Tulis a
Dockerfile
yang mendefinisikan wadah LAMP yang memenuhi persyaratan yang disebutkan di atas- REQ: Mesin harus memulai apache / mysql tepat setelah boot
- Bangun citra buruh pelabuhan
- Salin file yang diperlukan untuk menjalankan CMS ke mis
~/dev/cmsdir
- Di
~/dev/cmsdir/
bawah kendali versi
- Di
- Jalankan kontainer buruh pelabuhan, dan pasang
~/dev/cmsdir
ke/var/www/
container tersebut - Isi database
- Lakukan pekerjaan di
/dev/cmsdir/
- Komit & matikan kontainer buruh pelabuhan
Penyebaran
- Siapkan host jarak jauh (mis. Dengan yang memungkinkan)
- Dorong gambar container ke host jarak jauh
- Mengambil
cmsdir
-proyek melalui git - Jalankan kontainer buruh pelabuhan, tarik database dan pasang
cmsdir
ke/var/www
Sekarang, ini terlihat cukup bagus di atas kertas, TAPI saya tidak yakin apakah ini akan menjadi pendekatan yang tepat sama sekali.
Pertanyaan:
Saat mengembangkan secara lokal, bagaimana cara membuat database tetap ada di antara boot ulang instance container? Atau apakah saya perlu menjalankan sql-dump setiap kali sebelum memutar container?
Haruskah saya memiliki contoh kontainer terpisah untuk db dan server apache? Atau apakah cukup memiliki satu wadah untuk kasus penggunaan di atas?
Jika menggunakan wadah terpisah untuk database dan server, bagaimana saya dapat secara otomatis memutarnya ke atas dan ke bawah pada saat yang bersamaan?
Bagaimana sebenarnya saya memasang
/dev/cmsdir/
ke dalam container/var/www/
-directory? Haruskah saya menggunakan volume data untuk ini?Apakah saya melewatkan jebakan? Apa saja yang bisa disederhanakan?
Jawaban:
Jika Anda memerlukan indepent persistensi database dari container CMS, Anda dapat menggunakan satu container untuk MySQL dan satu container untuk CMS Anda. Jika demikian, Anda dapat menjalankan container MySQL Anda dan menerapkan ulang CMS Anda sesering yang Anda inginkan secara mandiri.
Untuk pengembangan - opsi lainnya adalah memetakan direktori data mysql dari host / mesin pengembangan Anda menggunakan volume data. Dengan cara ini Anda dapat mengelola file data untuk mysql (di buruh pelabuhan) menggunakan git (di host) dan "reload" status awal kapan saja Anda mau (sebelum memulai kontainer mysql).
Ya, saya pikir Anda harus memiliki wadah terpisah untuk db.
Saya hanya menggunakan skrip dasar:
Ya, Anda dapat menggunakan sakelar data-volume -v. Saya akan menggunakan ini untuk pengembangan. Anda dapat menggunakan pemasangan hanya-baca, jadi tidak ada perubahan yang akan dilakukan pada direktori ini jika Anda mau (aplikasi Anda harus menyimpan data di tempat lain).
Bagaimanapun, untuk penerapan akhir, saya akan membangun dan menggambar menggunakan dockerfile dengan
ADD /home/user/dev/cmsdir /var/www/cmsdir
Saya tidak tahu :-)
sumber
Anda ingin menggunakan docker-compose. Ikuti tutorialnya di sini. Sangat sederhana. Tampaknya mencentang semua kotak Anda.
https://docs.docker.com/compose/
sumber
Saya memahami posting ini sudah lebih dari satu tahun saat ini, tetapi saya baru-baru ini mengajukan pertanyaan yang sangat mirip pada diri saya sendiri dan memiliki beberapa jawaban bagus untuk pertanyaan Anda.
Anda dapat menyiapkan instance buruh pelabuhan MySQL dan menyimpan data pada penampung data tanpa negara, alias penampung data tidak perlu dijalankan secara aktif
Ya, saya akan merekomendasikan memiliki contoh terpisah untuk server web dan database Anda. Ini adalah kekuatan Docker.
Lihat repo ini yang telah saya buat . Pada dasarnya ini sesederhana
make build
&make run
dan Anda dapat menjalankan server web dan wadah basis data secara lokal.Anda menggunakan
-v
argumen saat menjalankan penampung untuk pertama kalinya, ini akan menautkan folder tertentu di penampung ke host yang menjalankan penampung.Saya pikir ide Anda sangat bagus dan saat ini mungkin untuk mencapai semua yang Anda minta.
Berikut ini adalah solusi kunci putar untuk mencapai semua kebutuhan yang telah Anda daftarkan.
sumber
Saya telah menyusun penyiapan penulisan buruh pelabuhan yang mudah digunakan yang harus sesuai dengan persyaratan alur kerja pengembangan Anda.
https://github.com/ehyland/docker-silverstripe-dev
Fitur utama
HHVM
+NGINX
atauApache2
+PHP5
The README.md harus cukup jelas untuk Anda mulai.
sumber