ααΈαα½αααααΉααααΈαα·α
αα½α
α ααΎβααΆαβααΏαβα’αααΈβααΎαα‘αΎα αααααα·ααΈαααααΈααααααΆ ?
αα αααα»αααΆαααααΆαααα α―αααΆααααααααΌαααΆααα ααΆα‘αΎαααΎααααΈααααα½ααααααΆαα’αα·αααααααααααα·ααΈ SaaS αα½ααααααΆαααΌαααααΉααααα’αααα’αα·αααααα αα·ααα·ααααα DevOps α’αααΈαααα αΆ αα·αααΆαα’αα»ααααααααα½ααααααααΉαααΆαααααα»ααααα»αααΆαα’αα·αααααααααααα·ααΈααααΎαα
α―αααΆααααααααΌαααΆααααααΎαα‘αΎααααα’αααα’αα·αααααααααααα·ααΆ Heroku α
αααααα·ααΈ Twelve-Factor App α’αΆα
ααααΌαααΆαα’αα»ααααα
αααααααααα·ααΈααααααααααΆααΆααΆααααααααααα·ααΈααΆαα½α αα·αααααΎααααΆααααΆααα½ααααα
αΌαααααΆααααααΆααααααΆαααα (ααΌαααααΆααα·αααααα αα½αααΆα ααααΆαααααααΆααααα)α
αααααααααα’αααΈαααααΆααααα·ααΈααΆααααααααααα’ααααΎα
- ααΌαααααΆαααΌα - ααΌαααααΆαααΌααα½αααααΌαααΆαααΆαααΆααα αααα»αααΆαααααααααααααα - ααΆαααΆαααααααΆαα αααΎαα
- ααΆαα’αΆααααα - αααααΆαα αααΆααααΆαα αα·ααααααΆαα’αΆααααα
- ααΆααααααβαα ααΆαααααααα - αααααΆαα»αααΆαααααααα αααα»ααααααααΎαααΆα
- ααααΆααααααΆαααα - αα·α αΆαααΆααααΆααααααΆααααααΆααααΆααααααα·ααΈαααα½α
- αααΆα, αααααα, ααα - αααααααααΆααααΆαααα‘αΎα αα·αααααα·ααααα·αααΆαααΉααααΉα
- ααααΎαααΆα - ααααΎαααΆααααααα·ααΈααΆααααΎαααΆαααααΆααααααα½α α¬α αααΎαα
- ααΆαααααΆααα ααα - ααααΆααααααΆαα ααααΆααααααΆαα αα ααα
- ααΆαααααααααΆ - ααααΎααΆαααααααΆααααααα·ααΈααααα’ααααααααααΎααααΎαααΆα
- αα·ααΆαααΆα - αααααΎαααΆαααΏααΆααααΆα’αα·ααααΆααΆαα½αααΉαααΆαα αΆααααααΎααα αα αα·αααΆααα·αααα’αΆα
- ααΆαα’αα·αααααααααααα·ααΈ/ααΆαααααΎααααΆααααααα·ααααα·ααΆα - αααααΆααΆαα’αα·αααααα ααααΆααααΆα αα·αααα·ααΆααΆαααα·αααααααααα’αααα±ααααααααααααΆααΆααααα’αΆα ααααΎαα ααΆαα
- ααΆαααΆααααΎ - ααΎααααααα ααα»ααΆααααααΈαααααααΉαααα·ααΆααα
- αα·α αα ααΆαααααααΆα - α’αα»ααααααΆαααΆαααααααΆα/ααααααααααααααααΎααααΎαααΆααα·ααα
α’αααα’αΆα ααα½αααΆαααααααΆαααααααα’αααΈαααααΆααΆαα 12 ααΈαααααααΆααααααα
-
αααααααααΌαααΆα - ααααΌαααα’αΆα -
α’αααααα’αααΈ habr α αααααα·ααΈαααααΈααααααΆ - ααΆαααααααααΆααααΌαααΆα -
α’αααααα’αααΈ habr α αααααΆααΆαααααα½α 7 αα αααα»ααααααα·ααΈ 12 Factor - αα·αα·αααααΎαα‘αΎααα·αααΌααααααΆααΆαα 12 αααααΆαααααααααααααα’αα½αααα
ααΎααΆαααΆαααααααΆαααααααααααααΊααΆα’αααΈ?
ααΆαβααΆααβαααααΆαβαααβααααβααΊβααΆβαα·ααΈβααΆβαααααβααβααΆαβαααααβααΌαβααΌαβαααααα·ααΈβαα½αβαα ααα·ααααα ααΆααααααααα’αα·αα·ααα α»αααααααα·αααΎαααΆαααααΆααααααΌαααΆαα½ααα ααΎαααααααααααΆααα αααααΆααα·αααα ααΆαααΆαααααααΆααααααα·ααΈααΆαα½αααΌααα αααααααΆααα αΆα.
αααααααΆαααααΆαααααααΆα BG αα»ααΆαααΎααα ααΌα αααααΆααααα αΆααααα»αααΌαααΆαααΆααααααα
- αα αααα αΆααααααΎαααΆααααΆαααΈαααα ααα½α 2 αααααΆααααααΌαααΌα ααααΆ αααααα·ααΈ αααααα α αΎαααΆαααααααα (αα»αααααΆα) α
- αααααααααααΌαααΉαααΆαααααΎααΆααα’αααα ααΆαααααΆαααΈααααα½α (αααα).
- αα αααα’αααααααΌαααΆαα ααααααΆαααααααα ααααααααΆααααΌαααααΌαααΆαααααΎαα αα α»ααααααααΆααα ααΎαααΆαααΈααααααααααα (ααα) ααααα αα α»αααααααα·αααααΎαααΆαααααΎααΆαα½αα‘αΎαα
- αααααΆααααΈαααααΌαααΎα ααα αααΆαααΈαααααααΌαααΆαααααΎαα αα α»ααααααααΆαααΆαααααα»α αααααααααααΌαααΆααααααααΆααααααααΆααΎααααΈααααΌαααΈ αααα αα ααΎ ααα αααΆαααΈαααα
- α₯α‘αΌααααα’αα·αα·ααααΆααα’ααααΎαααααααααααΌααααααααΎαααΆαααΆαα½α ααααααααα αααΆαααΈααααααΎ
- αααααΆααααααααα αααα αααΆαααΈααααααααΎααΆα αααΆααα ααααααααα»ααα»ααααα»αααααΈαααααΆαααΆαααααααΆααα·ααααααααα ααα server α αΎααααα»αααααΈααΆαααΆααααΆααα αα·αααα α»α αααααααααααΌαααα αΌαα’αααααααΎααααΆαααααα‘αααα αα·αα αααα αααΆαααΈααααααααΆααααααααααααΆαα αΆαα α αΎααααααΌαααααΈααααΌαααΆαααααΎαααααΆααααΆααα·αα·αααα‘αΎααα·α αα·αααΆαααααα
- α αΎααα α α»ααααα ααααααααΎαααΆαααΆααααΌαααΆαααααΎαα αα α»ααααααααΆαααΆαααααααΌα ααααΆα αααα αααΆαααΈαααα α αΎααααααΆααααΈααααΎαα αα α»ααααααααΆαααΆ αααααααααααΌαααα αΌαααααΎαααα‘αααα αα·αα αααα αααΆαααΈαααα
ααΆααΆααα’ααααΎααα
ααα’ααΆαα α αΎααα
glance ααααΌααα·ααα½αααΆααααα αΆα’αααΈααΆαα½αααΆααα
ααα»ααααα
αΆααααΆααααΈααΎαααααα
αααα»ααα·ααααααΎααααααΎαααΆαα½αααΉαααΆαααααΌαααΌαααΆαααΆαααΌα
αααααΆαα
ααα’α»ααααα αΆααα
αααα»ααααααααΆααααα»ααΆααα·αααααΉαααΎαααα αααααααΆααααααΆααααααΆαααααααα ααΎαααΉααααααααα
ααΆαα
ααααααααα
ααααΌααααΆαααα’αα·αα’αΆααααα
ααΆααα·αααα½ααα»αααααΌαα α§ααΆα αααααΆαααααααααα αΆαααΈα§αααααααααΎααααΆαα/αα·ααΈααΆαααααααααααα»αααααΎ α’αααα’αΆα ααααΎαααααΎαααΆαα½ααααααΆααα»αααΆαααααααααααΆα
α§ααΆα αααααΆαα αααΎαααΉααααααααααααΆααΆαα½αααΆαα’αα·ααααααααα ααααα (αααααΊααΆααΆαααααΆααααα’αΎααα½α) ααΆαα½α PHP αα·α Docker α
αααΆααααααΆαααααααααααααΌαααΆααα·αααααΆααΆαααααααααΆααααααααΆαααααΎααααΆαααααααΆαααααααΎα§ααΆα αααααΆααααΆαα ααααα·αααΎα’αααα ααααα½αααΆαααααΉααααΈααααααααΎαααααΆαααααα ααΌαααααΎααΆααααααΆαααΎαα ααΆαααααααααΎαα
1. ααΌαααααΆαααΌα
ααααΎ FTP αα·α FileZilla ααΎααααΈαααα ααα―αααΆααα αααΆαααΈααααααααα½αα αα»ααααααΆαα»αααΌααα ααααααααΆαααα ααΈαα ααΎαααΆαααΈαααααα·αααααα
ααααααααααα½αααααΆαααΌαααααΆαααΌααααα½α αααααΊααΌαααΆααα’ααααΆαααααΈααααα½αα Git ααααΆααα αααΆαααΈααα (ααΆαααα·α, ααααΆααααΆα, test1, test2...) ααααΎααΌαααΈααΆααΆααααααΆααααΌαα αα½αα αα·ααΈαααααΎααααααα ααΆαααΌαααΆααααΈαααααΆααααααΆααααΌαα
2. ααΆαα’αΆααααα
ααΆααααααααΆαααααΆααα’αααα αααα»ααααααααααΆαααα α«αααααααααα ααααΎαα αα α»ααααααααΆααααααΆαααααααααααααααααΌαααααΈαα ααααΆαα½ααααααα αα α»αααααααααααααΆαααα ααα‘αΎαα§αααααααααΎααααΆααα αΆαααΆα αααΆααα’αααααααααΆαααα ααΎαααΆαααΈααααααααΆαααααΆαααα 20 ααααααααααααα»αααααΎαααΆαα
αααααααα½ααα½αααααΆααααααΈααΆαα’αΆααααααααα’αΆα
αααααΆααααΆαα
αααΆαα (αααααΆαα’αΆααααα αααα»αααααΆααααααΆααα·ααααΆαααα)α ααΆαα’αΆαααααααΆααα’ααααααΌαααααααΌαααΆαααααααααΆαα
αααΆααααΆαα αα·αααΆα
ααααα‘ααα
α
αΌαααΎαααααΆα§ααΆα ααα αααααα·ααΈααα ΠΈ Dockers.
αααααα·ααΈααα - αααααα·ααΈααααααααααααα αααααα’αα»ααααΆαα±ααα’αααααα‘αΎααααααΆααααα αααα»α PHP α αααααα·ααΈαααα’αα»ααααΆαα±ααα’ααααααααΆαααααααααΆαααΉααααΉα α¬ααα»α α αΎαααααααα½αααΆαααΆαα αααΆααα ααΆα’αΆα ααΆα 20 αααααααααααααααΆαα ααΎαααΆαααΈααα α αΎαααΈαα½ααααΉαααΆααααααΈαααα αα αα·ααααααΆαααααααΆαααααα½ααααα―αααΆαααα
Dockers - α§αααααααααΎααααΆαααααα’αα»ααααΆαα±ααα’αααααααα αα·ααααααα·ααΆααΆαααααααααα·ααΈααΉαααααΎαααΆαα ααΌα ααααα αΎα ααΌα ααααΆααΉααααααα·ααΈαααααα ααα»ααααα ααααα ααααΆαααααα ααα ααΎαα’αΆα αααααααΆααΎαααααα·ααΈααααΎαααΆαααΆαα½αα’αααΈα ααααΎαααΎαααααααΆααααΆαααααα PHP ααα‘αΎααααααα αααααα αΆαααΆα ααααααΆααααααααααααΎαααΆα ααααα·αα αΆαααΆα αααααααα’αααΈααααααα α αΎαααααΆαααααα»αααααα·αααααααααααααΆαα½ααααα αα αα·αααα·ααααΆααααααΆαααΈααααΆαααΈα αα·ααααααααααααααααα αααααΊααααααααΆααα’αααα ααΎαααΆαααΈααααααααααΎαααΆαααΆαααα Docker α’αΆα ααααΎααααΆαααααα ααααΆαα½α αα·αααα·ααΆααΆααα»αααααΆααΆαααααα»αα
3. ααΆαααααααα ααΆαααααααα
αααααΆαα»αααΆααααααααΆααααααααααΆαααα αααα»αααΌαα αααααααααααΆαααααΆαααΈαααααΆααααα ααΆα ααααα‘αααααααΆααααα·αα ααααΆααααααα·ααααα·ααΆααααααααα·ααΈα’αΆαααααααΎααα·ααααΆααααααααΆαααα αααα»ααααααα·ααααΆα’αΆααΈααααααααααααααααααααΎααααα·αααΎααααααααααΆααααα
ααΆαααααααα ααΆαααααααα - αααααΊααΆαα·ααΈαααα½αααααααααΆαααΆαααααααΆααααααααα½ααααα»αααααΆα ααΆαα§ααααααα· ααΆαααααααα ααΆαααααααααα½αααααααΌαααΆαααααααΆααα’αααααα·ααααΆα (env vars)α
αααααΊαααααΈααΆα’ααααααααΆαα»αα―αααΆαααααααα ααΆααααααααααΆα αααΎα .config.prod .config.local α αΎαααααΌαααααααα½αααΆαα αααααΆααα±ααααααΎααααΆαααα .config (ααΆααααααααααΆααααααααααα·ααΈα’αΆααα·αααααα) - αααααΉααα·ααααααΆαα·ααΈααΆαααααααααΉαααααΌααα α αΆααααΆααααΈ αααα»αααααΈααα ααααααΆαααΈααΆαααααααα ααΆααααααααααΉαααΆαααΆααΆααΆααααααααΆααα’αααα’αα·αααααααααααα·ααΈααΆααα’αα α αΎααα·ααααααααΈαααΆαααΈαααααα·αααααααΉαααααΌαααΆααααααααααα½αα ααΆαααααααα ααΆααααααααααΆααα’ααααααΌααααααααΆαα»ααααααααΆαααα αααα»αααααααααααΆαααααααΆα (CI/CD) αα·ααααααΎααααααΆααααα·ααααΆαααααααααααΆααΆαα½αααΉαααααααα»ααααααΆαααα αΆαααΆα ααααααΆααααα·ααααΆαααΆααααΆαααα½ααα αααααΆααα±ααααααΎααααΆααα
4. ααααΆααΆααΈααΈααΈ
ααααΌαααααΆαααααΆαααΉααααΉααα ααΉαααα·ααααΆα ααααΎααααΆααααΆααααααΆαααααααααααΆαααααΆααααααΆααααααΌα ααααΆαα αααα»αααα·ααΆααΆαααΆααααΆααα
ααΆααΆααα·α α ααα»α ααααααα½αααΎααααΆαααΆαααααΆααααΆαα½αααΉαα ααα»α α’αααΈααΆαααααα ααΈαααααααΎααααΆαα ααα»α ααααα αα·ααααααααΆαααααααα ααΆααααααααααααααΆαα·αα’αΆα ααααΎααΆααα α αΎαααΆααΌαα αααααααΆααααα»αααΆαααααααα ααΆααααααααααΉαααααΆααα α»αααααΆαα’αααΈαααα
ααΆααααααΆααααΆααα’αααα ααΆααααααΆααααααΆααααα ααΌα ααΆαααΆαααΈααααα½α ααΌαααααΆααα·αααααα ααααΆααααααααΆαααααααΆαα ααααΌαααααΌα ααααΆαααααΆααααΆααααα·ααααΆαααΌαααααΆα αα·αααα·ααααΆαααΆααΈααΈααΈ/ααα·αααααα αααααΆααα·αααα αα αααααΆαα½α ααΆααααααΆαααααΆααααααΌααααααααααΆαα αααα»αα’αΆα αααα½αααΆαα α αα ααΌαααααΆαααα 1 ααΆαα½αααΉαααΌαααααΆαααα 2 ααααα·αα αΆαααΆα αααααΆααααααΌααααααΌααααααα·ααΈα α¬ααΎααα ααΆααα»α ααΆα§ααΆα ααα αα αααααααΎααΆαααααααΆαααααΆαααα α’αααααΉααα·αα αΆαααΆα ααααααΆααααΆααααααΆααααΆααα·ααΈαα·αααααΆαα½ααααααΆαααααΆαααΈαααααααΆαααααααΆααααααααααα
5. αααΆα, αααααα, ααααα·ααααα·
ααΆαααααααα α»ααααααααααΌααα ααΎαααΆαααΈαααααα»ααααα ααααα·αααΆαα±ααΆαααααα·αααΆαα ααααααΆαα‘αΎααα·ααααααα αα·αα αΆαααΆα ααααααααα αααΆαααα α’αααβααΆβαααβαα·αβααΆβα’αΆα βαααα ααβααΌαβα αΌαβααα·αααααβαααβααΆαβααα α»αβααΊβααΆβα’αααβαααααβαααααα·ααΈβαα·αβααα’!
αααααααααΆααααΆαααααΆαααΆαααααααΆαααααΌααααααααα ααααΈααααΆαα αα·ααα ααα
ααΆαα±ααΆααα·ααααα‘αααααα·αα αααααΎαααΆαα ααααααΆαααΆαα½αααΉαα αααΆααα ααααα αΆαααααααααα·ααΈ (ααΆααααααΌααααα»ααα½α α αΎα αα·αααααααααα½αααΆααααα αααααΆααααΆαααααα»ααα) αααααΆααααααΆαα»ααα αααα»αααΆαα αΌαααααΎαα αα ααΌα αααααααα»αααααΈααΆαααα α»α α’αααα’αΆα ααααΆαααααα αΆααααΆαα αααααΊααΆαααααααααααΆαααα―αααΆα α ααααααΆα αα·αααα―αααΆα ααΆβαααβαα αα α»ααααααα αΎαβαααααΆααβααΈβααΆαβααΆααβαααααΆαβαα·αβααΆαβαααα»αβααβαααβαααααα ααΆβαααβαα αα α»αααααα ααααΆααααααααααααΆαααα·αα·ααααααααΆαα ααΉαααΆαα ααααααΆαααααΈααααααα·ααα ααΆααααα»α α ααααααΆα ααΆαα½αααΉααααααααΆαααααααααα ααααααΆαα
αααααΊααΆαααααααααααΎαα αα αΆαααΆαααΆαααααααΆααααααα-αααα αααα’αα»ααααΆαα±ααα’ααααα·αααααΉαααααααΌααααΆαααΌαααα»ααααααα ααα»αααααααααΆααα’αΆα ααααΌααααΆαααααΆαααΆααα’αα αα·αααΌααααΈααααα·ααααΆαααΆαα½αααΉααααααααΆααααα»αααΆααα·ααααα‘αααααα·αααΌαα’αααΈααααααααΆαα
6. ααααΎαααΆα
αααααΆαα»ααα·ααααααααααΆαααΆααααααα·ααΈαααααααΆαααα αααα»ααααααα·ααΈαααα½αααΆααααΆααα ααααΎαααααα αααα»α RAM αααααααααα·ααΈαααα½αα―αα ααααΎααΆαα αααααααα±ααααΆαα αααΎααααΆαααααΆααααααΆααΈααΈααΈααΆααααα’αΆα ααααΎαα ααΆαα ααΉαααα’ααααΎααΆααα·ααααααΆαααααα·ααΈα’αΆα ααΆαααααΎαααΆααααα½αα αΎααα·αα’αα»ααααΆαα±ααααααΎααΆαααααααΆαααα
ααΆααααααΉααααα αααααΆαα»ααα·αααααααααααα»αααααΆαααααααΆαααααααααααααααααααααΆααααααΆααΈααΈααΈ (memcached, redis) ααΌα αααααααααΈααΆα’αααααΆαααααΎαααΆααααααα·ααΈα ααα½α 20 αααα»αααααΎαααΆαααααα αααα»αα αααααα½ααααααααΆαα αΌαααααΎααααΆαααααααΆααααΉαα’αΆα ααααααααΎααΆαααΆαα½αα’αα·αα·αααα αααα»α ααααΆαααΆαααΌα ααααΆαααα’αααααααΎααααΆαααααα»αααααΎααΆαααΆαα½ααααααα·ααΈαααα»αααααΎαααΆαααααααααα ααΆαα½αααΉααα·ααΈααΆαααααααα ααΆααααααΆαα·αααΆα’αααααααΎααααΆααααααΆααΈααΈααΈα ααα½αααα»ααααΆααα α’αααΈααααααααΆαααΉαααααΎαααΆαααΆααααααΆ αα·ααα·αααΆααααα αΆααΆαα½αααΉαααΆαα αΌαααααΎαα·ααααααα
7. ααΆαα αα ααα
ααΆααααααΆαααΈαααααα αααααααα»ααααααααααΉαααΈααααααααΎααΆαααΆαα½αααααΆααααααΆααΈααΈααΈα α¬αααααΎαααΆαααα ααα‘αΎαααααΆααααααΆααΈααΈααΈαααααααΆαααα
ααΆααααα»ααααΆαααΈαααααα αααααα α§ααΆα αααααΌα
ααΆαααΌαα»α PHP αα
αααα»α Apache α
ααααΆααααααΆααα’ααααααα’αααααααΌαααα’αΆα
α
αΌαααααΎααΆαααααΆαα
αα·ααα
ααααΆααααααΆαα
αΌααα
ααΆααα’αΆααααααΆα αα·αα
ααααα½αα
ααα½α (localgost:5432, localhost:3000, nginx:80, php-fpm:9000) αααααΊααΈ nginx αααα»αα’αΆα
α
αΌαααααΎααΆαααΆαα php-fpm αα·ααα
ααΆαα postgres αα·αααΈ php-fpm αα
postgres αα·α nginx α αΎαααΆααα·αααΈααααΆααΈαα½αα αααα»αα’αΆα
α
αΌαααααΎααααΆααααααααααααα ααΆααα·ααΈααα ααααααΆαααααααααααααΆαααααα½ααα·αααααΌαααΆαα
αααααΆαααα
ααΉαααααααΆαααααααααααααΆαααααα½αααααααααααα
8. ααΆαααααααααΆα
ααααΎααΆαααΆαα½αααααΎαααΆααα½α ααΎαα·αααΌα αααααα ααααΎαααΆαααΆα αααΎαααΉααα·αα’αΆα ααΆααααααααΆααΆααα!
αα»ααααααααααααΆααααααΎααΆαααααααΆαα Docker swarm ααΊααα’αααααΆααααΏααααα
Docker Swarm ααΊααΆα§ααααααααααΆαααααααΎα αα·ααααααααααα
ααααααα»αααΊααα ααΆαααααΆααααΆαααΈααααααααααΆ αα·ααα»αααΆα
αααΎααα
ααΎαααΆαααΈααααα½αα
αααααααΎ swarm αααα»αα’αΆα αααααααΆααΎααααΆαααα»ααααΆαααααααα»αααΉααααα αααααααΆααααααΎαααΆαααΈαα½αα αα·αα ααα½αααααΎαααΆαααααααΆααααααΌα ααααΆααααααα»αααΉαααΎαααααΎαααΆα α αΎααα»αααααΆαααΆααααα»ααααααα½ααα·αααααααα ααΎα ααααααααΆααααααα±ααααΉααααααααααΌααααΈαααααααααααααααα·αα ααααΎαααΆαα ααΌα αααα αααααΎαααΎαααΆααΆααααα»ααα ααΎαααΆαααΈαααααΆαααΎαα‘αΎα αααα»αα’αΆα ααααααααααΎαααΆαααααααααα αααααΆαααααααααΆααααα»ααα ααΎααααΎαααΆαααΆααααΆααα
9. αα·ααΆαααΆα
αα»αααααΎαα½αααΎααααΈααααΎααΆαααΆαα½αααααΎαααΆα αα·ααα·ααααααα ααΆααααααΆααααααΎαααΆααα½ααα½ααααααααΆααααααααααα·ααΈααΆααααΌαα ααααα·αααΎααααΆαααααα½αααααΆααα α»α α’αααΈααααααααΆαααΉαααααΆααα α»αα
ααααΎαααΆα αα·αααααΆααααααΈαα½ααα’αΆα ααααΌαααΆααα·ααα αααααΆααααΆα α αΎαααααα·ααα½ααααααΆαααααααααΆαααααααααααααα (ααΆααΆααα·αααΆαα ααααα·αααΆααααααΆααααΆαααααααααΉααα·αα’αΆα ααααΎααΆααααααΆααααααΆααααααααααααααααα ααα»ααααααααΆααααααααααααααΉααα·ααα·ααααααΆααααΈααααΆααααααα)α ααααΎαααΆαααΆααα’ααααααΌαααααααΌαααΆααααα ααααααααΌα ααΌα αααααα αααααααα½αααΆααααΌαααΆααααα αα αααααααΆααα·ααααααααΆαα½αααααΌαααΆαααΌα ααΆααα α αΎαααααααααααΉαααααΎαααΆαααΆαααααΉαααααΌααα ααααααα’αααααΎαααΆααΎααααααα αααααΊ αααααΈααΆαααα»αααααΈααΆαααΆααααα ααααΆαααααΆααααααα αα·αααααααα·ααα½αααααΌαααΆαααΌα ααΆααα (ααααααΆαααααα·ααααα·ααΆαααΊαααααααα ααΈααα αααα½ααααα»αααΌαααααΆααα·ααααααααααΎαααΆαααααΆαααα»αααα»ααααα α αΎαααααα·αααΎαααΆαα αα ααΆαααααα½ααα½αααΈαααα»ααααΆααα α¬ααααΌαααΆαααααα·ααααα·ααΆαα½α error, αααααΆαααααα·αααΆααααα½αααααααααααΈαααα»αα α»αααααααααΆααααα αααα»αααΆααα·α).
10. ααΆαα’αα·αααααααααααα·ααΈ/ααΆαααααΎααααΆααααααα·ααααα·ααΆα
ααΆαααα·α ααααΆααααΆα αα·αααααααΌαααααΆααααααααα·ααΈααααΌααααα»αααααΆα αα αααα»αααΆαααα·α ααΎαααααΎααααααααα Yii Lite αα·ααααα»ααααα»α Yii ααΎααααΈα±ααααΆααααΎαααΆαααΏααααα»αααα·ααααα!
ααΆααα·α ααΆαααΆαααααααΆα αα·αααααΎααΆαααΆαα½αααΌαααΆααα’αααα½ααααααα·ααα αααα»αααα·ααΆααΆαααΌα ααααΆααααα·α (ααΎααα·ααα·ααΆαα’αααΈαααααααΉαααΌαααααααα)α ααΌα ααααΆαααααααα αα»ααααα·αα’αα·ααααααααΆαα½ααα½αααα’αΆα ααΆαααααααΆαααΌααα ααα·αααααααααα·αααΎα αΆαααΆα α α αΎααα·ααααααΆααααααΆαα’αα·αααααααα·ααααα½αα ααα½ααααααΆαααα½αααΆαααααα»ααααααΆααα·αααααααα αααααΆαααα’ααα»αααααααααΆαααα·αααααα»ααααααααα’αΆα ααΎααααααα·ααΈα αΌααα αααα»αααα·αααααααΆαα
Docker αααα½αααΎααααα»αααΏαααααααα ααααα·αααΎα ααα»α αα»αααΆααα’ααααααΌαααΆαααααααααααΎα ααΆαααααΎ docker ααΉαααΆαααααΌαααααΎαααΆαααααΆαααΆαααααααΆαααα·ααααΆαααΆααααΎααΆαααα·α αα·ααα ααΎαααΆαααΈαααΌαααααΆαααΎααααΈαααα αΌαααΆααααααααΆαα½α α¬ααΈαα
11. αααααα ααα»
ααΎαααααααααααα ααα»αα α―αααΆα αα·αααΌαααααΆααα·αααααα! ααΎααα·ααααα’αΆαα―αααΆα αα·αααΌαααααΆααα·ααααααααΈαααααα ααα»ααα ααααα·α hard drive αααααΆα 9000 Peta bytes α αΎαααΆααα’ααΆααα
αααααα ααα»ααΆααα’αααα½αααααααΌαααΆαα αΆαααα»αααΆααΆααααααΈαααααααΉαααα·ααΆααααα½αα αααααα·ααΈαααα½αααΆαα·ααα½αααΆαααααααααΉαααΆαααααΎαααΆααααααα ααα»ααα αααααα ααα»αα½αααα ααααΆ stdout α¬ααααΎααΆαααααα·ααΈααΆαααΌα ααΆ udp ααΌα ααααααΆαααααΎααΆαααΆαα½ααααααα ααα»αα·ααααααΎααααα αΆααΆαα½ααααααΆαααααααα·ααΈαααααα greylog ααΊααα’αααααΆααααΏααααα Graylog ααα½ααααααα ααα»ααΆααα’ααααΆαααα udp (αα·ααΈααΆαααααα·ααααααΌαα±αααααα αΆαααΆαααααΎαααα’αααΈααΆαααα½ααααα ααααααααΆαααααααααα) αα·αααααααααααααΆαα½ααααααα·ααΈααΆααααααααΆαααΆαα½αα‘αΎα α αΎαααααΆαααααααααααΆαααΆαα½αααΉααα ααΆαααααααα αα·αααααΎαααΆααααααα ααα»ααα»αααααα αααααα·ααααΆαααααα·ααΈαα·αααααΆααααααΌαααΎααααΈααααΎααΆαααΆαα½ααα·ααΈααΆαααααααααααααα
12. αα·α αα ααΆαααααααΆα
ααΎααααΈααααΎαα αα α»ααααααααΆααα·αααααα ααΌαααααΆααα·ααααααααα ααααΎα ααα»α αααα αααααααΆααααααΎαααΆα ααααα‘αααα αααα»α API αααααααα·ααααα·ααΆ 2 ααααΆααααααΆααΉαααΆαα±ααα’αααΈαααΆααα’αααααα½αα ααα»ααααα’ααααα·αααααααα α’αααααΉααα·αα α»α ααΈααααα α αΎαααΎααα·αααααΌαααΆαααΆαααααΎα αααΆααααα»αααα
αα·α αα ααΆαααααααΆαααΆααα’αααα½αααααααΌαααΆαα’αα»αααααααα»αααα·ααΆααΆαααΌα ααααΆααΆαα½αααΉαααΌαααΆααα’αααα ααααα·αα ααααααΆαα αααααΊααααα·αααΎααΎαααααΌαααΆαααααΆααααααΌααα ααΆααααααααααααΌαααααΆααα·αααααα αααααΎαααΉααα·αααααΎααΆααααααααααΆαααααΆααααααΌαααααααα½ααα αα·αααααααααΆαα»ααααΈααΆααααα§ααααααααααααααααΌαααααΆααα·αααααααααααΎαααΎααα½αα ααα½αα αααααΆααααΏααααααα ααΎααααααΎαααααααΈαααΆα ααααα‘αα - ααΆαααααΎα αααΆααααα»α αααααααΌαααΆαααααα·ααααα·αααααααΈαααααα αα·ααααααααααααααΆαααΆαααααααΌα ααααΆααΆαα½αααΉαααααααααΌαα αα·αα’αΆα αααααΆαα αααααΆαααα·α αα ααΆαααααααααααΆααα’αα ααΌα ααΆααΆααααααααααααααΆαα½αααΉααα·αααααα αα·ααΈααΆαααααααααααααααΆαα½αααααααΌαααΆαααααΎα
ααΆαα’αα»ααααα§ααΆα ααααα αααα»α PHP, Laravel, Laradock, Docker-Compose
PS α§ααΆα αααααΆααα’ααααααΌαααΆαααααΎα‘αΎααα ααΎ MacOS α αα½αααααΆαα αααΎααααααααααααααΆααααΈαα»α αααααα α’αααβααααΎ Windows α’αααααβα±ααβαααα»α ααα»ααααβαααα»αβαα·αβααΆαβααααΎβααΆαβααΆαα½α Windows ααΌαβααβα αΎαα
α
αΌααααααααΎαααααΆαααΆααααααΎααα·αααΆααααα PHP ααΆαα½ααααααΆαααα‘αΎααα
ααΎαα»αααααΌαααααααααΎα α αΎαααααΆαα’αααΈααΆααα’ααα
ααα‘αΎαααααα
α»αααααααααα»ααα docker αα·α docker-compose α (αααα’αΆα
ααααΆααα
ααΎα’ααΈαααΊαα·α)
docker -v &&
docker-compose -v
1. ααΆαα
git clone https://github.com/Laradock/laradock.git &&
ls
ααΆααααααΉα Laradock αααα»αααΉααα·ααΆαααΆααΆααΆαααααααααΆααααααΆααααΆαααααααΆααα»ααα·ααααααααα½αααΆα
αααΎαα ααα»αααααααα»αααΉααα·αααααΆαα±ααααααΎ Laradock αααααααααααααΆαααΆααααααααα
αααα»αααα·ααααααα αααααΆαααααΆαααααααΌαααΆαααα
αααα ααΆααΆααΆααααααΎαααΆααααα»αααΆααααααΎααα»αααααΆαααααα½αααααα’ααααααααα’ααααΎα§ααΆα ααααα
αααα»α Laradock ααΆααΉαααααΌαααΆαααααΎα±αααααααΎαααΆααα»α ααΈαααααααααΆαααααΆααααΆααααααΌαααΆαα’αααΈααααααααΆααααααΆααα
ααααααα½ααααααα
2. ααααααα ααΆαααααααα Laradock ααΎααααΈααααΎαααΆααααααα·ααΈααααααΎαα
cd laradock &&
cp env-example .env
α’.α‘. ααΎααα habr (ααααααα laradock ααααΌαααΆαααααΌα) αα
αααα»ααααααα·ααΈαα·αααααα½αα
ααα½αα (αααα»αααααΈ PHPStorm αααααααα»α)
αα ααααΆααααΆαααα ααΎαααααΆααααααΆαααααααααααααααα»αααααα
α’.α’. ααΎαααααΎαααΆαααΌαααΆαααααααααααΎααΆαα (αααα»αααααΈααααα’ααα ααΌαααΆαααΉαα
αααΆαααααααααααα»αααΆαααΆαααα)
ααααααααααΎααΆαααΊααΆααΌαααΆααααααΆααααα
αααΆαα·ααααααααΆααααααΎααΆαααΆαα½αααααααααααααα»αααΆαα’αααα’αα·ααααααα
ααΎαα αΌααα αααα»ααα»ααααααααΎ
docker-compose up -d workspace &&
docker-compose exec workspace bash
α’.α£. ααΆαααα‘αΎα Laravel
composer create-project --prefer-dist laravel/laravel application
α’.α€. αααααΆααβααΈβααα‘αΎαβαα½α
ααΎαβαα·αα·αααβααΎαβααΆβααΎβααβαααβααΆαβααααααβααααΌαβααΆαβαααααΎαβα‘αΎαβα αΎαβα¬βα’ααβα
ls
exit
docker-compose down
α’.α₯. α
αΌαααΎααααααααα
PHPStorm α αΎααααααααααΌαααααΉαααααΌααα
ααΆαααααααα·ααΈ laravel ααααααΎααα
αααα»αα―αααΆα .env α
3. ααααααααΌαααΆααα’αααα
Git α
ααΎααααΈααααΎααΌα αααααΎαααΉααααααΎαααααΆαααα ααΎ Github (α¬αααααααααααααα) α ααααα αα habr αα αααα»α terminal α αΎαααααα·ααααα·ααΌαααΆααααααα
echo "# habr-12factor" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:nzulfigarov/habr-12factor.git # Π·Π΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ»ΠΊΠ° Π½Π° Π²Π°Ρ ΡΠ΅ΠΏΠΎ
git push -u origin master
git status
α αΌαααΎααα·αα·αααααΎαααΆααΎα’αααΈαααααααααΆααααα·ααααα»αααααΆααα¬α’αα
ααΎααααΈααΆαααΆααααα½α αααα»αααΌαααααΆαα±ααααααΎα
ααα»α
αααααΆαααααααΎαααΎααα½αα
ααα½ααααααΆαα Git αααα»αααααΈαααααααα»α
4. αααα αΆααααααΎα!
αα»ααααα αΆααααααΎα ααααΌαααααΆααααΆααααΆαα’αααΈαααα½ααα ααΎα ααα 80 αα·α 443 ααα
docker-compose up -d nginx php-fpm
ααΌα
ααααα αΎα ααααααααααααΎαααΆαααααΆαααα 3 ααΆα
ααααα‘ααααΈααααΆα
- nginx - αααΆαααΈαααααα ααααα
- php-fpm - php αααααΆααααα½αααααΎααΈαααΆαααΈαααααα ααααα
- ααααααααααΎααΆα - php αααααΆααα’αααα’αα·αααααα
αα αααααα ααΎααααααα ααΆαααΆ ααΎαααΆααααααΎααααααα·ααΈαα½ααααααααΌαααΉα 4 α ααα»α αααα»αα αααα 12 ααΊ:
1. ααΌαααααΆαααΌα - ααΌαααΆααα’αααααα·ααα αααα»αααααΆαααα½α (α αααΆαααΌα α ααΆα’αΆα ααααΉαααααΌααααα»αααΆααααααα docker αα ααΆααααα»ααααααα laravel ααα»ααααααΆαα·αααααΆαααα)α
2. ααΆαα’αΆααααα - ααΆαα’αΆαααααααΆααα’ααααααααΎαααααΌαααΆαααααααααΆαα αααΆααααΆαααα αααα»α application/composer.json αα·ααααα»α Dockerfile ααΈαα½αααααα»αααΊαααααΈαα½ααα
3. ααααΆααααααΆαααα - ααααΆααααααΈαα½αα (php-fom, nignx, workspace) ααααα αααα»αααΈαα·ααααααααα½α α αΎαααααΌαααΆαααααΆααααΈααΆααααα α αΎααα αααααααΎααΆαααΆαα½αααααΆαααααα½α ααααΆααααααααααααααΉααα·ααααααααααΆααααα
4. ααααΎαααΆα - ααααΆααααααΈαα½ααααΊααΆααααΎαααΆααα½αα ααααΆααααααΈαα½αααα·ααααααΆααααΆαααΆααααααααα»αααα
5. ααΆαααααΆααα ααα
docker ps
ααΌα
αααααΎαα’αΆα
ααΎαααΎα ααααΆααααααΈαα½ααααααΎαααΆααα
ααΎα
αααααααααΆ α αΎαα’αΆα
α
αΌαααααΎααΆαα
ααααααααΆααααααααααααααΆααα’ααα
6. ααΆαααααααααΆ
Docker α’αα»ααααΆαα±ααααΎααααααΎαααααΎαααΆαααΆα αααΎαααααααΆααααααΌα ααααΆααΆαα½αααΉααα»αααααΆαααΆααααα»ααααααααααααααααα·αααΆααα½αααΆα
α αΌαααΎααααααααα»αααΊααα α αΎααααααΆααΆααααααΆαα· --ααααΆα
docker-compose down &&
docker-compose up -d --scale php-fpm=3 nginx php-fpm
ααΌα
αααααΎαα’αΆα
ααΎαααΎα α
αααΆααα
ααααααααΌαααΆααααααΎα php-fpm container α ααΎααα·αα
αΆαααΆα
αααααΆααααααΌαα’αααΈααΆααα’αααααα»αααΆαααααΎααΆαααΆαα½ααα»ααααααα ααΎαααααααα
αΌαααααΎααΆαα
ααΎα
ααα 9000 α αΎα Docker αααααααααααΆααααα»ααααΆααα»αααΊααααααααΆααααΎαα
7. αα·ααΆαααΆα - αα»αααΊαααααΈαα½ααα’αΆα αααααΆααααααα·ααααααααααααααΆαααααα’ααααααα ααΆααααααα α¬α αΆααααααΎααα»αααΊαααα‘αΎααα·αααΉααα·ααααααΆαααααααααα·ααααα·ααΆααααααααα·ααΈααα‘α»ααααααΎαααααΎαααΆαααΆαααααααααΆαααααααα αα»αααΈαα½ααααα’αΆα ααΎαααΆααααααααααααααα
8. ααΆαα’αα·αααααααααααα·ααΈ/ααΆαααααΎααααΆααααααα·ααααα·ααΆα - ααα·ααααΆαααααααΎαααΆααα’ααααΊααΌα ααααΆα αααααααΎαααΆααααααααααα ααΎαααΆαααΈααααα αααα»αααα·ααααα α’αααααΉααα·αα αΆαααΆα αααααΆααααααΌαα’αααΈαα αααα»αααΆααααααααΆααααα’αααααα α’αααΈααααααααΆαααΉαααα’ααααΎ Docker ααΆαααααααΌα ααααΆα
9. ααΆαααΆααααΎ β αααααα ααα»ααΆααα’αααα αααα»ααα»αααΊαααααΆαααααα αΌααα ααΆααααΆαααααΆα α αΎαα’αΆα ααΎαααΎααα αααα»ααα»αααΌα Docker α (αααα»αβααααΈβααα ααΆαβαα·αβααΆαα½αβαα»αβααα·αβαα βααααβαααααβααα αααβαααα ααβααΆβαα·αβαααβααΆβααααΈβααβααααα·αβααΎβα’αααβαα·αβααΆαβαααααααΆβααΆ)
docker-compose logs -f
ααα»ααααααΆαααΆαα
αΆααααΆαααΆαααααααααΆαααΎααα
αααα»α PHP αα·α Nginx ααααααααααααα ααα»αα
α―αααΆααα½αα ααΎααααΈααααααααααΆααΆαα α‘α’ ααΊα
αΆαααΆα
α ααααΆα
α ααααααααααα ααα»αα
α―αααΆααααα»αααΆαααααααα
ααΆαααααααααααα»αααΊαααααΈαα½ααααΆα
ααααα‘ααα
Docker αααααααααΌααααααααΆααααα»αααΆαααααΎαααααα ααα»αα·αααααΉαααααΎααααΈ stdout ααα»αααααααααα»αααααααααΆαααααααΆααααΏαααΌα ααΆ graylog ααααααα»αααΆααααααΆααααΆαααΎα α αΎααα ααΆααααα»α greylog ααΎαα’αΆα ααααΎαααΆααααααα ααα»ααΆααααααΎααααα α·ααα α αΎααααααα·ααΈααααααΎαααΉααα·ααααααααΆααααΆααΆααααααααΆαααΆαα½αα‘αΎαα
10. αα·α αα ααΆαααααααΆα - ααΆαααα·α αα ααΆαααααααΆαααΆααα’ααααααΌαααΆααααααααΆαααα laravel α’ααα»αα ααααα§ααααααα·ααααααααΆααα·αααααΆαα ααΌα αααα’ααααααααΎααααααα·ααΈαααααΆ 12 α ααααΆαα
ααΆα§ααΆα ααα αααα»αααΉααααα αΆαααΈαααααααααΆααααααααΆαα½αα
ααα½αααααΌαααΆαααααα·ααααα·α
ααΎαα
αΌααα
αααα»ααα»αα
docker-compose exec workspace bash
php artisan list
α₯α‘αΌααααααΎαα’αΆα
ααααΎααΆααααααααΆααΆαα½αα (ααΌαα
αααΆαααΆααΎααα·αααΆαααααααα
ααΆααααααααααΌαααααΆααα·αααααα αα·αααααΆαααααααΆαααα ααΌα
ααααααΆαααααααΆαααααΆααααααααΆααΉααα·αααααΌαααΆαααααα·ααααα·ααααΉαααααΌααα αααααααΆααααΌαααΆααα
ααΆα‘αΎαααΎααααΈααααΎααΆαααΆαα½αααααΆαααααααΆαα αα·αααΌαααααΆααα·αααααα)α
11. ααΆαααααααα
ααΆαααααααα αα·α α‘α₯α α α αααΆα, αααααα, ααα
αααα»αα ααα§αααα·ααααααααααα Blue-Green Deployment ααα»ααααααΆαααααα ααΆααΌααααΌααΆαααααααααΆααα’ααααααααα αααα»αααΉααααααα’αααααααΆα ααααα‘ααα’αααΈααΏααααα
ααα»ααα αααα·αααΊααα’ααααΎαααααααα CI/CD ααΌα ααΆ Jenkins ΠΈ Gitlab CI. αα αααα»αααΆααααΈα α’αααα’αΆα αααααα’αααααα·ααααΆααααααΆααααααΉαααα·ααααΆαααΆααααΆαααα½αα ααΌα ααααα αΎααααα»αααααΆαααΆααααα ααα»α c ααΉαααααΌαααΆαααααα ααΆαααααααα ααΆαααααααα.
αα·αα ααα»α α’αααΈ αααΆα, αααααα, ααα ααααΌαααΆααααααααΆαααααα»αααΆααααααααΆααααααΆαα½αααααα ααααααααα αΌα.
ααααααααα αΌα α’αα»ααααΆαα±ααα’ααααααα ααααααΎαααΆαααΆαααααααΆαααΆααααΆααααΆαααΆα αααΎα αααααΌααααααΆααααΈααααΆααααΆαααααΆααα½αααααα»α ααΆαα ααααααΆα αα·αααΆαααααα·ααααα·α ααααααα αααα»α Pipeline α’αααα’αΆα αααααΎαααΆαααααα»ααα»α αα·ααα·αααΆα’αααΈααΆααα’ααα αααααΊααΆα§ααααααααααΆααααααΆαα»ααααααΆαααααααααα
αααααΌααααααα·ααΈααΊαα
αα»αααααα
α
αΆααααααΎααααΌαα»ααααα
αααααααΌαααααΆαααααα
PS: αα·ααΈααΆαααααααΆααα’αααααα’αΆα
ααααΌαααΆαααααΎααΆαα½αα§αααααααααΎααααΆαααααααα αα·αααΆααΆααααααααααα·ααΈα ααΏαα
αααααΊααΆααααΉαααΆααα·ααα»αααααΆααα
ααααα: www.habr.com