ฉันมีลางสังหรณ์ว่านักเทียบท่าสามารถปรับปรุงเวิร์กโฟลว์ webdev ของฉันได้อย่างมาก แต่ฉันไม่ค่อยสามารถจัดการกับวิธีการเข้าใกล้โครงการที่เพิ่มนักเทียบท่าลงในสแต็กได้
สแต็กซอฟต์แวร์พื้นฐานจะมีลักษณะดังนี้:
ซอฟต์แวร์
อิมเมจ Docker ที่มี LAMP stack แบบกำหนดเอง
- Apache ที่มีหลายโมดูล
- ข้อมูล MySQL
- PHP
- CMS บางตัวเช่นSilverstripe
GIT
ขั้นตอนการทำงาน
ฉันสามารถจินตนาการได้ว่าขั้นตอนการทำงานจะมีลักษณะดังนี้:
พัฒนาการ
- เขียน
Dockerfile
ที่กำหนด LAMP-container ที่ตรงตามข้อกำหนดที่ระบุไว้ข้างต้น- REQ: เครื่องควรเริ่ม apache / mysql ทันทีหลังจากบูตเครื่อง
- สร้างอิมเมจนักเทียบท่า
- คัดลอกไฟล์ที่จำเป็นในการเรียกใช้ CMS เข้าไปเช่น
~/dev/cmsdir
- ใส่
~/dev/cmsdir/
ภายใต้การควบคุมรุ่น
- ใส่
- เรียกใช้คอนเทนเนอร์นักเทียบท่าและ
~/dev/cmsdir
ต่อเข้า/var/www/
กับคอนเทนเนอร์ - เติมฐานข้อมูล
- ทำงานใน
/dev/cmsdir/
- ยอมรับและปิดคอนเทนเนอร์นักเทียบท่า
การปรับใช้
- ตั้งค่าโฮสต์ระยะไกล (เช่น ansible)
- พุชอิมเมจคอนเทนเนอร์ไปยังโฮสต์ระยะไกล
- ดึงข้อมูล - โปร
cmsdir
เจ็กต์ผ่านคอมไพล์ - เรียกใช้ docker container ดึงฐานข้อมูลและต่อ
cmsdir
เข้า/var/www
ตอนนี้มันดูดีมากบนกระดาษ แต่ฉันไม่ค่อยแน่ใจว่านี่จะเป็นแนวทางที่ถูกต้องหรือไม่
คำถาม:
ในขณะที่พัฒนาในเครื่องฉันจะทำให้ฐานข้อมูลคงอยู่ได้อย่างไรระหว่างการรีบูตอินสแตนซ์คอนเทนเนอร์ หรือฉันจะต้องเรียกใช้ sql-dump ทุกครั้งก่อนที่จะหมุนคอนเทนเนอร์?
ฉันควรมีอินสแตนซ์คอนเทนเนอร์แยกกันสำหรับ db และเซิร์ฟเวอร์ apache หรือไม่ หรือจะเพียงพอที่จะมีภาชนะเดียวสำหรับกรณีการใช้งานข้างต้น?
หากใช้คอนเทนเนอร์แยกกันสำหรับฐานข้อมูลและเซิร์ฟเวอร์ฉันจะหมุนขึ้นและลงโดยอัตโนมัติในเวลาเดียวกันได้อย่างไร
ฉันจะเมานต์ไดเร็กทอรี
/dev/cmsdir/
คอนเทนเนอร์ได้/var/www/
อย่างไร ฉันควรใช้ไดรฟ์ข้อมูลสำหรับสิ่งนี้หรือไม่?ฉันพลาดข้อผิดพลาดหรือไม่? อะไรที่สามารถทำให้ง่ายขึ้น?