ΠΠ° Π½Π°Ρ Π·Π°Ρ ΡΠ΅Π², Π₯Π°Π±Ρ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΎ ΡΠ²ΠΎΡΠΈΡΡΠ΅
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΈ ΡΠ° Π·Π°Π΄ΠΎΠ²ΠΎΡΡΡΠ²ΠΎΠΌ ΡΡΠ°Π²ΡΠ°ΠΌΠΎ Ρ ΡΠ΅Π³Π° ΠΏΡΠ²Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡ. ΠΡΠ΅ΡΠΏΠ»Π°ΡΠΈΡΠΈ ΡΠ΅!
ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΠ΅ Π»Π°ΠΊ. ΠΠ°ΡΡΠΎ ΠΌΠΈ Π±Π°Π½ΠΊΠ΅ ΠΏΠ»Π°ΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΡΠ° Π΄Π° ΡΠ°Π΄ΠΈΠΌ Ρ ΠΎΠ²ΠΎΡ ΠΎΠ±Π»Π°ΡΡΠΈ, Π° ΡΠ²Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π²Π»Π°Π΄Π° ΠΎΠ²Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ Π·Π° ΡΠ°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ°ΡΠΈ?
ΠΠΊΠΎ ΡΡΠΌΡΠ°ΡΠ΅ Π΄Π° ΡΠ΅ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ Π½Π°ΡΡΠΈΡΠΈ ΡΠ°ΠΊΠΎ Π±ΡΠ·ΠΎ, ΠΏΡΠ΅Π΄Π»Π°ΠΆΠ΅ΠΌ Π΄Π° ΠΈΡΠΏΡΠΎΠ±Π°ΡΠ΅ ΡΠ°ΠΌΠΈ. ΠΠ°ΠΈΠΌΠ΅, ΡΠ°Π²Π»Π°Π΄Π°Π²ΡΠΈ ΠΎΠ²Π°Ρ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π», ΠΌΠΎΡΠΈ ΡΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΠΌΠ° Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΡ. Π’ΠΎ ΠΌΠΎΠ³Ρ Π΄Π° Π³Π°ΡΠ°Π½ΡΡΡΠ΅ΠΌ, ΠΏΠΎΡΡΠΎ ΡΠ΅ ΡΠΏΡΠ°Π²ΠΎ ΠΈΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡΠ° ΠΊΠΎΡΠ° ΡΠ΅ ΠΎΠ²Π΄Π΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΈ ΠΊΠΎΡΠΎΠΌ ΡΡΠΈΠΌ Π½Π°ΡΠ΅ ΠΊΠ»ΠΈΡΠ΅Π½ΡΠ΅ Π΄Π° ΡΠ°Π΄Π΅ ΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ-ΠΎΠΌ. ΠΠΎ ΡΠ΅ΠΌΡ ΡΠ΅ ΠΎΠ²Π°Ρ Π²ΠΎΠ΄ΠΈΡ ΡΠ°Π·Π»ΠΈΠΊΡΡΠ΅ ΠΎΠ΄ Π΄ΡΡΠ³ΠΈΡ
? Π£ ΡΡΠ²Π°ΡΠΈ, ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ²Π°ΡΠΈ. ΠΠ°ΠΊΠ»Π΅, Π²Π΅ΡΠΈΠ½Π° ΠΎΠ²ΠΈΡ
ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π° ΠΏΠΎΡΠΈΡΠ΅ ΠΎΠ±ΡΠ°ΡΡΠ΅ΡΠ΅ΠΌ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡ
ΡΡΠ²Π°ΡΠΈ - ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΠ° ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ΠΊΡΠ±Π΅ΡΡΠ» ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠΡΡΠΎΡΠΈ ΠΎΠ²ΠΈΡ
ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π° ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΡ Π΄Π° ΡΡ ΡΠΈΡ
ΠΎΠ²ΠΈ ΡΠΈΡΠ°ΠΎΡΠΈ ΡΠΏΠΎΠ·Π½Π°ΡΠΈ ΡΠ° ΡΠ°Π·Π²ΠΎΡΠ΅ΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΠΌΠ° ΠΈ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠΌΠ°. ΠΡΠΈ ΡΠ΅ΠΌΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΡΡΠ΅ΠΌ. ΠΡΠ²ΠΎ ΡΠ΅ΠΌΠΎ ΠΏΡΠΈΡΠ°ΡΠΈ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΠΌΠ° Π½Π° ΡΠ°ΡΡΠ½Π°ΡΡ. ΠΠ°ΡΠΈΠΌ ΡΠ΅ΠΌΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΈ ΠΈΠ·Π³ΡΠ°Π΄ΡΡ ΡΠ»ΠΈΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π·Π° ΡΠ²Π°ΠΊΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ. Π Π½Π°ΠΊΠΎΠ½ ΡΠΎΠ³Π° ΡΠ΅ΠΌΠΎ ΡΠ΅ ΡΠΏΠΎΠ·Π½Π°ΡΠΈ ΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ-ΠΎΠΌ ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Π΅ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΠΌΠ° Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΡ ΠΊΠΎΡΠΈΠΌ ΡΠΏΡΠ°Π²ΡΠ° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ.
ΠΠ²Π°Ρ ΠΏΡΠΈΡΡΡΠΏ, ΡΠ° ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½ΠΈΠΌ ΠΏΡΠΈΡΡΡΠΏΠΎΠΌ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΡ, Π΄Π°ΡΠ΅ Π΄ΡΠ±ΠΈΠ½Ρ ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΠ° ΠΎΠ½ΠΎΠ³Π° ΡΡΠΎ ΡΠ΅ Π΄Π΅ΡΠ°Π²Π° ΡΡΠΎ ΡΠ΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΎΠ²Π΅ΠΊΡ Π΄Π° Π±ΠΈ ΡΠ°Π·ΡΠΌΠ΅ΠΎ ΠΊΠ°ΠΊΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ΅ Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΡ. ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΠ΅ ΡΠ²Π°ΠΊΠ°ΠΊΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ°, ΠΏΠΎΠ΄ ΡΡΠ»ΠΎΠ²ΠΎΠΌ Π΄Π° ΠΎΠ½ΠΈ ΠΊΠΎΡΠΈ ΠΆΠ΅Π»Π΅ Π΄Π° ΡΠ΅ Π½Π°ΡΡΠ΅ Π·Π½Π°ΡΡ Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ.
Π‘Π°Π΄Π°, Π±Π΅Π· Π΄Π°ΡΠ΅Π³ ΠΎΠ΄Π»Π°Π³Π°ΡΠ°, Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΡΠ½Π΅ΠΌΠΎ ΠΈ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΠΌΠΎ ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ ΡΠ° ΠΊΠΎΡΠΎΠΌ ΡΠ΅ΠΌΠΎ ΡΠ°Π΄ΠΈΡΠΈ.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΡΠΈΠΌΠ΅Π½Π°
ΠΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ ΠΎΠ±Π°Π²ΡΠ°ΡΠΈ ΡΠ°ΠΌΠΎ ΡΠ΅Π΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡΡ. ΠΠ°ΠΎ ΡΠ»Π°Π· ΡΠ·ΠΈΠΌΠ° ΡΠ΅Π΄Π½Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ, Π½Π°ΠΊΠΎΠ½ ΡΠ΅Π³Π°, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π°Π»Π°ΡΠ΅ Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ°, Π²ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅Π½ΡΠΈΠΌΠ΅Π½ΡΠ° ΠΎΠ²Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅, Π΄ΠΎΠ±ΠΈΡΠ°ΡΡΡΠΈ ΠΏΡΠΎΡΠ΅Π½Ρ Π΅ΠΌΠΎΡΠΈΠ²Π½ΠΎΠ³ ΠΎΠ΄Π½ΠΎΡΠ° Π°ΡΡΠΎΡΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠ΅ΠΌΠ° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠ²Π°ΠΊΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π° Π³Π»Π°Π²Π½ΠΈ ΠΏΡΠΎΠ·ΠΎΡ ΠΎΠ²Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.
ΠΠ΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅Π½ΡΠΈΠΌΠ΅Π½ΡΠ° ΡΠ΅ΠΊΡΡΠΎΠ²Π°
Π‘Π° ΡΠ΅Ρ Π½ΠΈΡΠΊΠ΅ ΡΠ°ΡΠΊΠ΅ Π³Π»Π΅Π΄ΠΈΡΡΠ°, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ ΡΠ°ΡΡΠΎΡΠΈ ΠΎΠ΄ ΡΡΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΎΠ΄ ΠΊΠΎΡΠΈΡ ΡΠ²Π°ΠΊΠ° ΡΠ΅ΡΠ°Π²Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ ΡΠΊΡΠΏ Π·Π°Π΄Π°ΡΠ°ΠΊΠ°:
- Π‘Π-Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ ΡΠ΅ ΠΠ³ΠΈΠ½ΠΊ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠΎΡΠΈ ΠΎΠΏΡΠ»ΡΠΆΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠ΅ Π Π΅Π°ΡΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅.
- Π‘Π-ΠΠ΅Π±ΠΠΏΠΏ ΡΠ΅ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° ΠΠ°Π²ΠΈ ΠΊΠΎΡΠ° ΠΎΠ±ΡΠ°ΡΡΡΠ΅ Π·Π°Ρ ΡΠ΅Π²Π΅ ΡΠ° ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π°.
- Π‘Π-ΠΠΎΠ³ΠΈΡ ΡΠ΅ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠ° Π²ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅Π½ΡΠΈΠΌΠ΅Π½ΡΠ° Π½Π° ΡΠ΅ΠΊΡΡΡ.
ΠΠ°ΠΆΠ½ΠΎ ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½ΡΡΠΈ Π΄Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠΈ ΠΈΠ·ΠΎΠ»ΠΎΠ²Π°Π½ΠΎ. ΠΠ½ΠΈ ΡΠΏΡΠΎΠ²ΠΎΠ΄Π΅ ΠΈΠ΄Π΅ΡΡ βΡΠ°Π·Π΄Π²Π°ΡΠ°ΡΠ° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΠΈβ, Π°Π»ΠΈ Ρ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΌΠΎΡΠ°ΡΡ Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°ΡΡ ΡΠ΅Π΄Π½ΠΈ ΡΠ° Π΄ΡΡΠ³ΠΈΠΌΠ°.
Π’ΠΎΠΊΠΎΠ²ΠΈ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ
ΠΠ° Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌΡ ΠΈΠ·Π½Π°Π΄, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π½ΡΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ ΡΠ°Π·Π΅ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΈΠ»ΡΡΡΡΡΡΡΡΠΈ ΡΠΎΠΊΠΎΠ²Π΅ ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ. ΠΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ ΠΈΡ :
- ΠΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°Ρ Π·Π°Ρ
ΡΠ΅Π²Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠ°
index.html
(ΠΊΠΎΡΠΈ, Π·Π°ΡΠ·Π²ΡΠ°Ρ, ΠΏΡΠ΅ΡΠ·ΠΈΠΌΠ° Π Π΅Π°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅). - ΠΠΎΡΠΈΡΠ½ΠΈΠΊ ΡΡΡΠΏΠ° Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΡ ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΎΠΌ, ΡΡΠΎ ΡΠ·ΡΠΎΠΊΡΡΠ΅ ΠΏΠΎΠ·ΠΈΠ² Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΎΡ Π½Π° Π‘ΠΏΡΠΈΠ½Π³Ρ.
- ΠΠ΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΡΠΎΡΠ»Π΅ΡΡΡΠ΅ Π·Π°Ρ ΡΠ΅Π² Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ° Ρ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ.
- ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π²ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅Π½ΡΠΈΠΌΠ΅Π½ΡΠ° ΡΠ΅ΠΊΡΡΠ° ΠΈ Π²ΡΠ°ΡΠ° ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΊΠ°ΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° Π·Π°Ρ ΡΠ΅Π².
- Π‘ΠΏΡΠΈΠ½Π³ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ°ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ (ΠΊΠΎΡΠ°, Π·Π°ΡΠ·Π²ΡΠ°Ρ, ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΡ ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π°Π½Π°Π»ΠΈΠ·Π΅ ΡΠ΅ΠΊΡΡΠ°).
ΠΠΎΠ΄ Π·Π° ΡΠ²Π΅ ΠΎΠ²Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ
ΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Π΅ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΠΌΠ° Π½Π° Π²Π°ΡΠΎΡ Π»ΠΎΠΊΠ°Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ
ΠΠ° Π±ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ°Π΄ΠΈΠ»Π°, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΡΠ²Π° ΡΡΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠΎΡΠ½ΠΈΠΌΠΎ ΡΠ° Π½Π°ΡΡΠ»Π°ΡΠΎΠΌ ΠΎΠ΄ ΡΠ²ΠΈΡ - ΠΏΡΠ΅Π΄ΡΠΎΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΎΠΌ.
βΠΠΎΠ΄Π΅ΡΠΈΡΠ΅ Π Π΅Π°ΡΡ Π·Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠ°Π·Π²ΠΎΡ
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΠΎΠ΄Π΅.ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΠΠΠ Π½Π° ΡΠ²ΠΎΡ ΡΠ°ΡΡΠ½Π°Ρ. ΠΠ°Π΄Π° ΡΠ²Π΅ ΠΎΠ²ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π·Π° Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡΡ Π΄ΠΎ ΡΠ°ΡΡΠΈΠΊΠ»Π΅ Π²Π°ΡΠ΅Π³ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° sa-frontend
ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
npm install
ΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ΠΌ ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ node_modules
Π±ΠΈΡΠ΅ ΡΡΠΈΡΠ°Π½Π΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΡΠΈΡΠΈ ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π½Π°Π»Π°Π·Π΅ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ package.json
. ΠΠ°Π΄Π° ΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅ΡΠ·ΠΌΡ Ρ ΠΈΡΡΡ ΡΠ°ΡΡΠΈΠΊΠ»Ρ, ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
npm start
Π’ΠΎ ΡΠ΅ ΡΠ²Π΅. Π‘Π°Π΄Π° ΡΠ΅ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΡ ΠΏΡΠΈΡΡΡΠΏΠΈΡΠΈ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΎΡΠΈΡΠΈ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΡ Π°Π΄ΡΠ΅ΡΡ Ρ Π²Π°ΡΠ΅ΠΌ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΡ: localhost:3000
. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠΈ Π½Π΅ΡΡΠΎ Ρ ΡΠ΅Π³ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Ρ. ΠΠ΄ΠΌΠ°Ρ
ΡΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π΅ΡΠ΅ΠΊΠ°Ρ ΠΎΠ²ΠΈΡ
ΠΏΡΠΎΠΌΠ΅Π½Π° Ρ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΡ. ΠΠ²ΠΎ ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅ Π·Π°Ρ
Π²Π°ΡΡΡΡΡΠΈ ΡΠ°ΠΊΠΎΠ·Π²Π°Π½ΠΎΡ βΠ²ΡΡΡΠΎΡβ Π·Π°ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ΄ΡΠ»Π°. ΠΠ²ΠΎ ΡΠΈΠ½ΠΈ ΡΡΠΎΠ½Ρ-Π΅Π½Π΄ ΡΠ°Π·Π²ΠΎΡ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΠΌ ΠΈ ΠΏΡΠΈΡΠ°ΡΠ½ΠΈΠΌ ΠΈΡΠΊΡΡΡΠ²ΠΎΠΌ.
βΠΡΠΈΠΏΡΠ΅ΠΌΠ° Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ
Π£ ΡΠ²ΡΡ Ρ ΡΡΠ²Π°ΡΠ½ΠΎΠ³ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΠ²ΠΎΡΠΈΠΌΠΎ Ρ ΡΠΊΡΠΏ ΡΡΠ°ΡΠΈΡΠΊΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΈ Π΄Π° ΠΈΡ ΠΏΠΎΡΠ»ΡΠΆΠΈΠΌΠΎ ΠΊΠ»ΠΈΡΠ΅Π½ΡΠΈΠΌΠ° ΠΊΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ.
ΠΠ° Π±ΠΈΡΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», ΠΈΠ΄ΠΈΡΠ΅ Π΄ΠΎ ΡΠ°ΡΡΠΈΠΊΠ»Π΅ sa-frontend
ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
npm run build
ΠΠ²ΠΎ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° build
. Π‘Π°Π΄ΡΠΆΠ°ΡΠ΅ ΡΠ²Π΅ ΡΡΠ°ΡΠΈΡΠΊΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π½Π΅ΠΎΠΏΡ
ΠΎΠ΄Π½Π΅ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°ΡΠ΅ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.
βΠΠΎΡΠ»ΡΠΆΠΈΠ²Π°ΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠΌΠΎΡΡ ΠΠ³ΠΈΠ½ΠΊ-Π°
ΠΡΠ²ΠΎ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΈ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΠΠ³ΠΈΠ½ΠΊ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ. sa-frontend/build
Ρ ΡΠ°ΡΡΠΈΠΊΠ»Ρ [your_nginx_installation_dir]/html
.
Π‘Π° ΠΎΠ²ΠΈΠΌ ΠΏΡΠΈΡΡΡΠΏΠΎΠΌ, Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π° ΡΠΎΠΊΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΠ° ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ index.html
Π±ΠΈΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ°Π½ Π½Π° [your_nginx_installation_dir]/html/index.html
. ΠΠ²ΠΎ ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΡΡ ΠΠ³ΠΈΠ½ΠΊ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ ΠΊΠ°Π΄Π° ΡΠΎΡ ΠΏΡΠΈΡΡΡΠΏΠ°. Π‘Π΅ΡΠ²Π΅Ρ ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ Π΄Π° ΡΠ»ΡΡΠ° Π½Π° ΠΏΠΎΡΡΡ 80
, Π°Π»ΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄ΠΈΡΠΈ ΠΎΠ½Π°ΠΊΠΎ ΠΊΠ°ΠΊΠΎ Π²Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΡΠ΅ΡΠΈΠ²Π°ΡΠ΅ΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ [your_nginx_installation_dir]/conf/nginx.conf
.
Π‘Π°Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°Ρ ΠΈ ΠΈΠ΄ΠΈΡΠ΅ Π½Π° localhost:80
. ΠΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π Π΅Π°ΡΡ.
Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΡ ΠΎΠΏΡΠ»ΡΠΆΡΡΠ΅ ΠΠ³ΠΈΠ½ΠΊ ΡΠ΅ΡΠ²Π΅Ρ
ΠΠΊΠΎ ΡΠ°Π΄Π° ΡΠ½Π΅ΡΠ΅ΡΠ΅ Π½Π΅ΡΡΠΎ Ρ ΠΏΠΎΡΠ΅ Type your sentence
ΠΈ ΠΏΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ Π΄ΡΠ³ΠΌΠ΅ Send
- Π½ΠΈΡΡΠ° ΡΠ΅ Π½Π΅ΡΠ΅ Π΄Π΅ΡΠΈΡΠΈ. ΠΠ»ΠΈ, Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ ΠΊΠΎΠ½Π·ΠΎΠ»Ρ, ΡΠ°ΠΌΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΏΠΎΡΡΠΊΠ΅ ΠΎ Π³ΡΠ΅ΡΡΠΈ. ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠ°Π·ΡΠΌΠ΅Π»ΠΈ Π³Π΄Π΅ ΡΠ΅ ΡΠ°ΡΠ½ΠΎ ΠΎΠ²Π΅ Π³ΡΠ΅ΡΠΊΠ΅ ΡΠ°Π²ΡΠ°ΡΡ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠΌΠΎ ΠΊΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.
βΠΠ½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
ΠΠ»Π΅Π΄Π°ΡΡΡΠΈ ΠΊΠΎΠ΄ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ App.js
, ΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΏΡΠΈΡΠΈΡΠΊΠΎΠΌ Π½Π° Π΄ΡΠ³ΠΌΠ΅ Send
ΠΏΠΎΠ·ΠΈΠ²Π° ΠΌΠ΅ΡΠΎΠ΄ analyzeSentence()
. ΠΠΎΠ΄ Π·Π° ΠΎΠ²Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅ Π΄Π°Ρ Ρ Π½Π°ΡΡΠ°Π²ΠΊΡ. ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° Π·Π° ΡΠ²Π°ΠΊΠΈ ΡΠ΅Π΄ ΠΊΠΎΡΠΈ ΠΈΠΌΠ° ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ ΠΎΠ±ΡΠ°ΡΡΠ° # ΠΠΎΠΌΠ΅Ρ
, ΠΏΠΎΡΡΠΎΡΠΈ ΠΎΠ±ΡΠ°ΡΡΠ΅ΡΠ΅ Π΄Π°ΡΠΎ ΠΈΡΠΏΠΎΠ΄ ΠΊΠΎΠ΄Π°. ΠΠ° ΠΈΡΡΠΈ Π½Π°ΡΠΈΠ½ ΡΠ΅ΠΌΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠΈ ΠΈ ΠΎΡΡΠ°Π»Π΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°.
analyzeSentence() {
fetch('http://localhost:8080/sentiment', { // #1
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
sentence: this.textField.getValue()})// #2
})
.then(response => response.json())
.then(data => this.setState(data)); // #3
}
1. Π£Π Π Π°Π΄ΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΡΡ ΡΠ΅ ΡΠ°ΡΠ΅ ΠΠΠ‘Π’ Π·Π°Ρ ΡΠ΅Π². ΠΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ° ΡΠ΅ Π΄Π° Π½Π° ΠΎΠ²ΠΎΡ Π°Π΄ΡΠ΅ΡΠΈ ΠΏΠΎΡΡΠΎΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠ° ΠΎΡΠ΅ΠΊΡΡΠ΅ ΠΎΠ²Π°ΠΊΠ²Π΅ Π·Π°Ρ ΡΠ΅Π²Π΅.
2.Π’Π΅Π»ΠΎ Π·Π°Ρ ΡΠ΅Π²Π° ΠΏΠΎΡΠ»Π°ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ. ΠΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ΅Π»Π° Π·Π°Ρ ΡΠ΅Π²Π°:
{
sentence: "I like yogobella!"
}
3.ΠΠ°Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΌΠΈ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° Π·Π°Ρ
ΡΠ΅Π², ΡΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ°. ΠΠ²ΠΎ ΡΠ·ΡΠΎΠΊΡΡΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΡΠΈΠΊΠ°ΠΆΠ΅. ΠΠΊΠΎ ΠΏΡΠΈΠΌΠΈΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ (ΡΡ. ΠΠ‘ΠΠ ΠΎΠ±ΡΠ΅ΠΊΠ°Ρ ΠΊΠΎΡΠΈ ΡΠ°Π΄ΡΠΆΠΈ ΡΠ»Π°Π·Π½Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΈ ΠΈΠ·ΡΠ°ΡΡΠ½Π°ΡΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠ΅ΠΊΡΡΠ°), ΠΈΠ·Π±Π°ΡΠΈΡΠ΅ΠΌΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Polarity
, ΠΏΠΎΡΡΠΎ ΡΠ΅ Π±ΠΈΡΠΈ ΠΈΡΠΏΡΡΠ΅Π½ΠΈ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈ. ΠΠ²Π°ΠΊΠΎ ΠΎΠΏΠΈΡΡΡΠ΅ΠΌΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
const polarityComponent = this.state.polarity !== undefined ?
<Polarity sentence={this.state.sentence}
polarity={this.state.polarity}/> :
null;
Π§ΠΈΠ½ΠΈ ΡΠ΅ Π΄Π° ΠΊΠΎΠ΄ ΡΠ°Π΄ΠΈ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ Π΄ΠΎΠ±ΡΠΎ. Π¨ΡΠ° Π½ΠΈΡΠ΅ Ρ ΡΠ΅Π΄Ρ ΡΠ° ΠΎΠ²ΠΈΠΌ? ΠΠΊΠΎ ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ Π΄Π° Π½Π° Π°Π΄ΡΠ΅ΡΠΈ Π½Π° ΠΊΠΎΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΎΠΊΡΡΠ°Π²Π° Π΄Π° ΠΏΠΎΡΠ°ΡΠ΅ ΠΠΠ‘Π’ Π·Π°Ρ
ΡΠ΅Π² ΡΠΎΡ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠΈ Π½ΠΈΡΡΠ° ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΡ
Π²Π°ΡΠΈ ΠΈ ΠΎΠ±ΡΠ°Π΄ΠΈ ΠΎΠ²Π°Ρ Π·Π°Ρ
ΡΠ΅Π², ΠΎΠ½Π΄Π° ΡΠ΅ΡΠ΅ Π±ΠΈΡΠΈ ΠΏΠΎΡΠΏΡΠ½ΠΎ Ρ ΠΏΡΠ°Π²Ρ. ΠΠ°ΠΈΠΌΠ΅, Π·Π° ΠΎΠ±ΡΠ°Π΄Ρ Π·Π°Ρ
ΡΠ΅Π²Π° ΠΏΡΠΈΠΌΡΠ΅Π½ΠΈΡ
Π½Π° http://localhost:8080/sentiment
, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° Π‘ΠΏΡΠΈΠ½Π³Ρ.
ΠΠΎΡΡΠ΅Π±Π½Π° Π½Π°ΠΌ ΡΠ΅ Π‘ΠΏΡΠΈΠ½Π³ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΊΠΎΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠΈΡ
Π²Π°ΡΠΈ ΠΠΠ‘Π’ Π·Π°Ρ
ΡΠ΅Π²
βΠΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Π΅ Π½Π° Π‘ΠΏΡΠΈΠ½Π³
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ Π‘ΠΏΡΠΈΠ½Π³ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, Π±ΠΈΡΠ΅ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΠΠΠ8 ΠΈ ΠΠ°Π²Π΅Π½ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ°. ΠΠ°Π΄Π° ΡΠ²Π΅ ΠΎΠ²ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΠ°Π²ΠΈΡΠΈ ΡΠ° ΡΠ°Π΄ΠΎΠΌ Π½Π° Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΠΊΡΡ.
βΠΠ°ΠΊΠΎΠ²Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Ρ ΡΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ
ΠΠ΄ΠΈΡΠ΅, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», Π΄ΠΎ ΡΠ°ΡΡΠΈΠΊΠ»Π΅ sa-webapp
ΠΈ ΡΠ½Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
mvn install
ΠΠ°ΠΊΠΎΠ½ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ sa-webapp
Π±ΠΈΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π½ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ target
. ΠΠ²Π΄Π΅ ΡΠ΅ ΡΠ΅ Π½Π°Π»Π°Π·ΠΈΡΠΈ ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π° Ρ ΡΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ, ΠΊΠΎΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° sentiment-analysis-web-0.0.1-SNAPSHOT.jar
.
βΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
ΠΠ΄ΠΈΡΠ΅ Ρ ΡΠ°ΡΡΠΈΠΊΠ»Ρ target
ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΡΠ»Π΅Π΄Π΅ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar
ΠΠΎΡΠΈ ΡΠ΅ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ° ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠΠ° Π±ΠΈΡΠΌΠΎ ΠΏΠΎΡΠ΅Π»ΠΈ Π΄Π° Π³Π° ΠΏΠΎΠΏΡΠ°Π²ΡΠ°ΠΌΠΎ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠΈ Π΄Π΅ΡΠ°ΡΠ΅ ΠΈΠ·ΡΠ·Π΅ΡΠ°ΠΊΠ° Ρ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ° ΠΏΡΠ°ΡΠ΅ΡΠ° ΡΡΠ΅ΠΊΠ°:
Error creating bean with name 'sentimentController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'sa.logic.api.url' in value "${sa.logic.api.url}"
ΠΠ° Π½Π°Ρ ΡΠ΅ ΠΎΠ²Π΄Π΅ Π½Π°ΡΠ²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΏΠΎΠΌΠΈΡΠ°ΡΠ΅ Π½Π΅ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°ΡΡΠ΅ΡΠ° Π·Π½Π°ΡΠ΅ΡΠ° sa.logic.api.url
. Π₯Π°ΡΠ΄Π΅ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠΎ ΠΊΠΎΠ΄ Ρ ΠΊΠΎΠΌΠ΅ ΡΠ΅ Π³ΡΠ΅ΡΠΊΠ° ΡΠ°Π²ΡΠ°.
β ΠΠ½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
ΠΠ²ΠΎ ΠΈΡΠ΅ΡΠΊΠ° ΠΊΠΎΠ΄Π° Π³Π΄Π΅ ΡΠ΅ Π΄ΠΎΡΠ»ΠΎ Π΄ΠΎ Π³ΡΠ΅ΡΠΊΠ΅.
@CrossOrigin(origins = "*")
@RestController
public class SentimentController {
@Value("${sa.logic.api.url}") // #1
private String saLogicApiUrl;
@PostMapping("/sentiment")
public SentimentDto sentimentAnalysis(
@RequestBody SentenceDto sentenceDto)
{
RestTemplate restTemplate = new RestTemplate();
return restTemplate.postForEntity(
saLogicApiUrl + "/analyse/sentiment", // #2
sentenceDto, SentimentDto.class)
.getBody();
}
}
- Π£ Π‘
entimentController
ΠΏΠΎΡΡΠΎΡΠΈ ΠΏΠΎΡΠ΅saLogicApiUrl
. ΠΠ΅Π³ΠΎΠ²Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΡΠ΅ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π° ΡΠ²ΠΎΡΡΡΠ²ΠΎΠΌsa.logic.api.url
. - ΠΠΈΠ½ΠΈΡΠ°
saLogicApiUrl
ΡΠΏΠ°ΡΠ° ΡΠ΅ ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡΡ/analyse/sentiment
. ΠΠ°ΡΠ΅Π΄Π½ΠΎ ΡΠΎΡΠΌΠΈΡΠ°ΡΡ Π°Π΄ΡΠ΅ΡΡ Π·Π° ΠΏΠΎΠ·ΠΈΠ²Π°ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ° ΠΊΠΎΡΠΈ Π²ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ°.
βΠΠΎΠ΄Π΅ΡΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΡΠ²ΠΎΡΡΡΠ²Π°
Π£ ΠΏΡΠΎΠ»Π΅ΡΠ΅, ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΠΈΠ·Π²ΠΎΡ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ²ΠΎΡΡΡΠ²Π° ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° application.properties
, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π½Π°ΡΠΈ Π½Π° sa-webapp/src/main/resources
. ΠΠ»ΠΈ ΡΠ΅Π³ΠΎΠ²Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½ΠΈΡΠ΅ ΡΠ΅Π΄ΠΈΠ½ΠΈ Π½Π°ΡΠΈΠ½ Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΡΠ²ΠΎΡΡΡΠ°Π²Π°. ΠΠ²ΠΎ ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΡΠ°Π΄ΠΈΡΠΈ ΠΏΠΎΠΌΠΎΡΡ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=WHAT.IS.THE.SA.LOGIC.API.URL
ΠΡΠ΅Π΄Π½ΠΎΡΡ ΠΎΠ²ΠΎΠ³ ΡΠ²ΠΎΡΡΡΠ²Π° ΡΡΠ΅Π±Π° Π΄Π° ΡΠΊΠ°Π·ΡΡΠ΅ Π½Π° Π°Π΄ΡΠ΅ΡΡ Π½Π°ΡΠ΅ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ΠΌ, ΠΌΠΈ Π³ΠΎΠ²ΠΎΡΠΈΠΌΠΎ Π‘ΠΏΡΠΈΠ½Π³ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ Π³Π΄Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΈΠ΄Π΅ Π΄Π° Π±ΠΈ ΠΈΠ·Π²ΡΡΠΈΠ»Π° Π·Π°Ρ ΡΠ΅Π²Π΅ Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ°.
ΠΠ°ΠΊΠΎ Π½Π΅ Π±ΠΈΡΠΌΠΎ ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΆΠΈΠ²ΠΎΡ, ΠΎΠ΄Π»ΡΡΠΈΡΠ΅ΠΌΠΎ Π΄Π° ΠΠΈΡΡ
ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π° Π°Π΄ΡΠ΅ΡΠΈ localhost:5000
ΠΈ ΠΏΠΎΡΡΡΠ΄ΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΡΠΎ Π½Π΅ Π·Π°Π±ΠΎΡΠ°Π²ΠΈΠΌΠΎ. ΠΠ°ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠΎΠ³Π°, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Π‘ΠΏΡΠΈΠ½Π³ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΎΠ²Π°ΠΊΠΎ:
java -jar sentiment-analysis-web-0.0.1-SNAPSHOT.jar --sa.logic.api.url=http://localhost:5000
ΠΠ°ΡΠ΅ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠ΅ ΠΠΈΡΡ
ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°
Π‘Π°Π΄Π° ΡΠ²Π΅ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΡΠ°Π΄ΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΈ ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΎΡΠ΅ΠΊΡΡΠ΅.
βΠΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
ΠΠ° Π±ΠΈΡΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, ΠΌΠΎΡΠ°ΡΠ΅ ΠΈΠΌΠ°ΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΠΈΡΡ ΠΎΠ½ 3 ΠΈ ΠΠΈΠΏ, Π° ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΌΠΎΡΠ°ΡΡ Π±ΠΈΡΠΈ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ ΠΏΠΎΠ΄Π΅ΡΠ΅Π½Π΅.
βΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ
ΠΠ΄ΠΈΡΠ΅ Ρ ΡΠ°ΡΡΠΈΠΊΠ»Ρ ΡΠ²ΠΎΠ³ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° sa-logic/sa
ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:
python -m pip install -r requirements.txt
python -m textblob.download_corpora
βΠΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
ΠΠ°ΠΊΠΎΠ½ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ, ΡΠΏΡΠ΅ΠΌΠ½ΠΈ ΡΠΌΠΎ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅:
python sentiment_analysis.py
ΠΠ°ΠΊΠΎΠ½ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π±ΠΈΡΠ΅ Π½Π°ΠΌ ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠ»Π΅Π΄Π΅ΡΠ΅:
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Π’ΠΎ Π·Π½Π°ΡΠΈ Π΄Π° ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠ° ΠΈ Π΄Π° ΡΠ΅ΠΊΠ° Π½Π° Π·Π°Ρ
ΡΠ΅Π²Π΅ Π½Π° localhost:5000/
β ΠΡΡΡΠ°ΠΆΠΈΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄Π°
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ ΠΊΠΎΠ΄ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π΄Π° Π±ΠΈΡΠΌΠΎ ΡΠ°Π·ΡΠΌΠ΅Π»ΠΈ ΠΊΠ°ΠΊΠΎ ΠΎΠ½ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ° Π½Π° Π·Π°Ρ ΡΠ΅Π²Π΅:
from textblob import TextBlob
from flask import Flask, request, jsonify
app = Flask(__name__) #1
@app.route("/analyse/sentiment", methods=['POST']) #2
def analyse_sentiment():
sentence = request.get_json()['sentence'] #3
polarity = TextBlob(sentence).sentences[0].polarity #4
return jsonify( #5
sentence=sentence,
polarity=polarity
)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000) #6
- ΠΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°
Flask
. - ΠΠ΄ΡΠ΅ΡΠΈΠ²Π°ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ΅ Π·Π° ΠΎΠ±Π°Π²ΡΠ°ΡΠ΅ ΠΠΠ‘Π’ Π·Π°Ρ ΡΠ΅Π²Π° ΠΏΡΠ΅ΠΌΠ° ΡΠΎΡ.
- ΠΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅ ΡΠ²ΠΎΡΡΡΠ²Π°
sentence
ΠΎΠ΄ ΠΎΡΠ³Π°Π½Π° Π·Π°Ρ ΡΠ΅Π²Π°. - ΠΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
TextBlob
ΠΈ Π΄ΠΎΠ±ΠΈΡΠ°ΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈpolarity
Π·Π° ΠΏΡΠ²Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ ΠΏΡΠΈΠΌΡΠ΅Π½Ρ Ρ ΡΠ΅Π»Ρ Π·Π°Ρ ΡΠ΅Π²Π° (Ρ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ²ΠΎ ΡΠ΅ ΡΠ΅Π΄ΠΈΠ½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡΠ° ΠΏΠΎΡΠ»Π°ΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ·Ρ). - ΠΡΠ°ΡΠ°ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ° ΡΠΈΡΠ΅ ΡΠ΅Π»ΠΎ ΡΠ°Π΄ΡΠΆΠΈ ΡΠ΅ΠΊΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΈ ΠΈΠ·ΡΠ°ΡΡΠ½Π°ΡΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ Π·Π° ΡΡ
polarity
. - ΠΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π€Π»Π°ΡΠΊ, ΠΊΠΎΡΠ° ΡΠ΅ Π±ΠΈΡΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π°
0.0.0.0:5000
(ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΡ ΠΏΡΠΈΡΡΡΠΏΠΈΡΠΈ ΠΈ ΠΏΠΎΠΌΠΎΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ΅ ΠΎΠ±ΡΠ°ΡΡΠ°localhost:5000
).
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ ΠΊΠΎΡΠ΅ ΡΠΈΠ½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΡΠ°Π΄Π° ΡΠ°Π΄Π΅. ΠΠ½ΠΈ ΡΡ ΠΏΠΎΠ΄Π΅ΡΠ΅Π½ΠΈ Π΄Π° ΠΌΠ΅ΡΡΡΠΎΠ±Π½ΠΎ ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°ΡΡ. ΠΠ²Π°ΠΊΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π° Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Ρ ΠΎΠ²ΠΎΡ ΡΠ°Π·ΠΈ ΡΠ°Π΄Π°.
Π‘Π²ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈ ΠΊΠΎΡΠΈ ΡΠΈΠ½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΡΡ Π΄ΠΎΠ²Π΅Π΄Π΅Π½ΠΈ Ρ ΡΠ°Π΄Π½ΠΎ ΡΡΠ°ΡΠ΅
Π‘Π°Π΄Π°, ΠΏΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ Π½Π°ΡΡΠ°Π²ΠΈΡΠ΅, ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΎΡΡ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Ρ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΡ ΠΈ ΠΏΠΎΠΊΡΡΠ°ΡΡΠ΅ Π΄Π° ΡΠ°ΡΡΠ»Π°Π½ΠΈΡΠ΅ Π½Π΅ΠΊΡ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ ΡΠ° ΡΠΎΠΌ. ΠΠΊΠΎ ΡΠ΅ ΡΠ²Π΅ ΡΡΠ°ΡΠ΅Π½ΠΎ ΠΈΡΠΏΡΠ°Π²Π½ΠΎ - Π½Π°ΠΊΠΎΠ½ ΠΏΡΠΈΡΠΈΡΠΊΠ° Π½Π° Π΄ΡΠ³ΠΌΠ΅ Send
Π²ΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΈΡΠΏΠΎΠ΄ ΡΠ΅ΠΊΡΡΡΠ°Π»Π½ΠΎΠ³ ΠΏΠΎΡΠ°.
Π£ ΡΠ»Π΅Π΄Π΅ΡΠ΅ΠΌ ΠΎΠ΄Π΅ΡΠΊΡ ΡΠ΅ΠΌΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΠΈ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ Π½Π°ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ Ρ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠΌΠ°. ΠΠ²ΠΎ ΡΠ΅ Π½Π΅ΠΎΠΏΡ ΠΎΠ΄Π½ΠΎ Π΄Π° Π±ΠΈ ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΏΡΠΈΠΏΡΠ΅ΠΌΠΈΠ»Π° Π·Π° ΡΠ°Π΄ Π½Π° ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΡ.
ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ
Π‘Π»ΠΈΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΡΠ΅ Π»Π°Π³Π°Π½, ΡΠ°ΠΌΠΎΡΡΠ°Π»Π°Π½, ΠΈΠ·Π²ΡΡΠ½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΠΊΠΎΡΠΈ ΡΠ°Π΄ΡΠΆΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, ΠΊΠΎΡΠ° ΡΠΊΡΡΡΡΡΠ΅ ΡΠ²Π΅ ΡΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π·Π° ΡΠ΅Π½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅: ΠΊΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΠΎΠΊΡΡΠΆΠ΅ΡΠ΅ Π·Π° ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ΅, ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ΅ Π°Π»Π°ΡΠ΅ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ°. ΠΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Ρ ΠΠΈΠ½ΡΠΊ ΠΈ ΠΠΈΠ½Π΄ΠΎΠ²Ρ ΠΎΠΊΡΡΠΆΠ΅ΡΠΈΠΌΠ° ΠΈ ΡΠ²Π΅ΠΊ ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ ΠΈΡΡΠΎ Π±Π΅Π· ΠΎΠ±Π·ΠΈΡΠ° Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ.
Π’ΠΎ Π·Π½Π°ΡΠΈ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΌΠΎΠ³Ρ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π½Π° Π±ΠΈΠ»ΠΎ ΠΊΠΎΠΌ ΡΠ°ΡΡΠ½Π°ΡΡ, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΠ΅ ΡΠ΅ Π½Π°Π»Π°Π·Π΅ Ρ ΡΠΈΠΌΠ° ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ ΠΈΡΡΠΎ Ρ Π±ΠΈΠ»ΠΎ ΠΊΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅ΡΡ.
ΠΠ° Π±ΠΈΡΠΌΠΎ ΠΈΡΡΡΠ°ΠΆΠΈΠ»ΠΈ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈ ΡΠΏΠΎΡΠ΅Π΄ΠΈΠ»ΠΈ ΠΈΡ ΡΠ° Π΄ΡΡΠ³ΠΈΠΌ Π½Π°ΡΠΈΠ½ΠΈΠΌΠ° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΡΠ»ΡΠΆΠΈΠ²Π°ΡΠ° Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΏΠΎΠΌΠΎΡΡ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
βΠΠΎΡΠ»ΡΠΆΠΈΠ²Π°ΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΏΠΎΠΌΠΎΡΡ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅
ΠΠΎΠΊΡΡΠ°Π²Π°ΡΡΡΠΈ Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΡΠ΅ΠΌΠΎ ΡΡΠ»ΡΠ³Ρ ΡΡΠ°ΡΠΈΡΠΊΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅, Π½Π°ΠΈΡΠΈ ΡΠ΅ΠΌΠΎ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ΅:
- ΠΠ΅Π΅ΡΠΈΠΊΠ°ΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠ°, ΠΏΠΎΡΡΠΎ ΡΠ΅ ΡΠ²Π°ΠΊΠ° Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΏΡΠ½ΠΎΠΏΡΠ°Π²Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌ.
- ΠΠ°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. ΠΠ½ΠΎ ΡΡΠΎ ΡΠ°Π΄ΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ ΡΠ°ΡΡΠ½Π°ΡΡ ΠΌΠΎΠΆΠ΄Π° Π½Π΅ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΡ.
- Π‘ΠΏΠΎΡΠΎ ΠΈ ΡΠ΅ΡΡΡΡΠ½ΠΎ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΠ΅ΡΠ° Π·Π°ΡΠ½ΠΎΠ²Π°Π½ΠΎΠ³ Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ.
ΠΠ³ΠΈΠ½ΠΊ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠΎΡΠΈ ΠΎΠΏΡΠ»ΡΠΆΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΊΠΎΡΠ΅ ΡΠ°Π΄Π΅ Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ
ΠΠΊΠΎ ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ Π·Π° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ ΡΠ»ΠΈΡΠ½ΠΎΠ³ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΎΠ½Π΄Π° ΡΠ΅, Ρ ΠΏΠΎΡΠ΅ΡΠ΅ΡΡ ΡΠ° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΠΌ ΠΌΠ°ΡΠΈΠ½Π°ΠΌΠ°, ΠΌΠΎΠ³Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠΈ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΏΡΠ΅Π΄Π½ΠΎΡΡΠΈ:
- ΠΡΠΈΠΊΠ°ΡΠ½ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΡΡΠ°: ΡΠ°Π΄ ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΠΎΠΌ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠΎΡΠΊΠ΅Ρ.
- ΠΠ΅Π·Π°Π²ΠΈΡΠ½ΠΎ ΠΎΠ΄ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. ΠΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΊΠΎΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ Π½Π° ΡΠ²ΠΎΠΌ ΡΠ°ΡΡΠ½Π°ΡΡ ΡΠ΅ ΡΠ°Π΄ΠΈΡΠΈ Π±ΠΈΠ»ΠΎ Π³Π΄Π΅.
- ΠΠ°Π³Π°Π½ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ ΠΊΡΠΎΠ· ΡΠΏΠΎΡΡΠ΅Π±Ρ ΡΠ»ΠΎΡΠ΅Π²Π° ΡΠ»ΠΈΠΊΠ΅.
ΠΠ³ΠΈΠ½ΠΊ Π²Π΅Π± ΡΠ΅ΡΠ²Π΅Ρ ΠΊΠΎΡΠΈ ΠΎΠΏΡΠ»ΡΠΆΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΊΠΎΡΠ΅ ΡΠ°Π΄Π΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡ
Π£ΠΏΠΎΡΠ΅Π΄ΠΈΠ»ΠΈ ΡΠΌΠΎ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΡΠ°ΠΌΠΎ Ρ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ°ΡΠ°ΠΊΠ°, Π°Π»ΠΈ ΠΈ ΠΎΠ²ΠΎ ΡΠ΅ Π΄ΠΎΠ²ΠΎΡΠ½ΠΎ Π΄Π° ΡΡΠ΅ΠΊΠ½Π΅ΠΌΠΎ ΡΡΠΈΡΠ°ΠΊ ΠΎ ΠΏΡΠ΅Π΄Π½ΠΎΡΡΠΈΠΌΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.
βΠΠ·ΡΠ°Π΄Π° ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π·Π° Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π³ΡΠ°Π΄ΠΈΠ²Π½ΠΈ Π±Π»ΠΎΠΊ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Dockerfile
. ΠΠ° ΠΏΠΎΡΠ΅ΡΠΊΡ ΠΎΠ²ΠΎΠ³ ΡΠ°ΡΠ»Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Π·Π°ΠΏΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½Π΅ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, Π·Π°ΡΠΈΠΌ ΡΠ»Π΅Π΄ΠΈ Π½ΠΈΠ· ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ° ΠΊΠΎΡΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΡΡ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΊΠΎΡΠΈ ΡΠ΅ Π·Π°Π΄ΠΎΠ²ΠΎΡΠΈΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π΅ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.
ΠΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΠΏΠΎΡΠ½Π΅ΠΌΠΎ Π΄Π° ΡΠ°Π΄ΠΈΠΌΠΎ ΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΎΠΌ Dockerfile
, ΠΏΠΎΠ΄ΡΠ΅ΡΠΈΠΌΠΎ ΡΠ΅ ΡΡΠ° ΡΠΌΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ Π΄Π° ΠΏΡΠΈΠΏΡΠ΅ΠΌΠΈΠΌΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π° ΠΎΡΠΏΡΠ΅ΠΌΠ°ΡΠ΅ Π½Π° ΠΠ³ΠΈΠ½ΠΊ ΡΠ΅ΡΠ²Π΅Ρ:
- ΠΡΠ°Π²ΡΠ΅ΡΠ΅ Π Π΅Π°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° (
npm run build
). - ΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΠ³ΠΈΠ½ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ°.
- ΠΠΎΠΏΠΈΡΠ°ΡΠ΅ ΡΠ°Π΄ΡΠΆΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ°
build
ΠΈΠ· ΡΠ°ΡΡΠΈΠΊΠ»Π΅ ΠΏΡΠΎΡΠ΅ΠΊΡΠ°sa-frontend
Ρ ΡΠ°ΡΡΠΈΠΊΠ»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°nginx/html
.
ΠΡΠΏΠΎΠ΄ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΏΠ°ΡΠ°Π»Π΅Π»Π΅ ΠΈΠ·ΠΌΠ΅ΡΡ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈ Π³ΠΎΡΡΠΈΡ ΠΊΠΎΡΠ°ΠΊΠ° ΠΊΠΎΡΠΈ ΡΠ΅ ΠΎΠ±Π°Π²ΡΠ°ΡΡ Π½Π° Π²Π°ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ ΡΠ°ΡΡΠ½Π°ΡΡ.
βΠΡΠΈΠΏΡΠ΅ΠΌΠ° ΠΠΎΡΠΊΠ΅ΡΡΠΈΠ»Π΅-Π° Π·Π° Π‘Π-Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
Π£ΠΏΡΡΡΡΠ²Π° ΠΊΠΎΡΠ° ΡΠ΅ Π±ΠΈΡΠΈ ΡΠ°Π΄ΡΠΆΠ°Π½Π° Ρ Dockerfile
Π·Π° ΠΏΡΠΈΠΌΠ΅Π½Ρ SA-Frontend
, ΡΠΈΠ½Π΅ ΡΠ°ΠΌΠΎ Π΄Π²Π° ΡΠΈΠΌΠ°. Π§ΠΈΡΠ΅Π½ΠΈΡΠ° ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΡΠΈΠΌ ΠΠ³ΠΈΠ½ΠΊ-Π° ΠΏΡΠΈΠΏΡΠ΅ΠΌΠΈΠΎ ΠΎΡΠ½ΠΎΠ²Π½Ρ
- ΠΡΠ½ΠΎΠ²Π° ΡΠ»ΠΈΠΊΠ΅ ΡΡΠ΅Π±Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΠ³ΠΈΠ½ΠΊ ΡΠ»ΠΈΠΊΠ°.
- Π€ΠΎΠ»Π΄Π΅Ρ Π¦ΠΎΠ½ΡΠ΅Π½ΡΡ
sa-frontend/build
ΡΡΠ΅Π±Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΠΈ Ρ ΡΠ°ΡΡΠΈΠΊΠ»Ρ ΡΠ° ΡΠ»ΠΈΠΊΠ°ΠΌΠ°nginx/html
.
ΠΠΊΠΎ ΠΏΡΠ΅ΡΠ΅ΡΠ΅ ΡΠ° ΠΎΠ²ΠΎΠ³ ΠΎΠΏΠΈΡΠ° Π½Π° ΡΠ°ΡΠ» Dockerfile
, ΠΎΠ½Π΄Π° ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΎΠ²Π°ΠΊΠΎ:
FROM nginx
COPY build /usr/share/nginx/html
ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΎΠ²Π΄Π΅ ΡΠ΅ ΡΠ²Π΅ Π²ΡΠ»ΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ, Π° ΡΠ°Π΄ΡΠΆΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ΅ ΡΠ°ΠΊ ΠΈΡΠΏΠΎΡΡΠ°Π²ΠΈΠ»ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΠΈΡΡΠΈΠ² ΠΈ ΡΠ°Π·ΡΠΌΡΠΈΠ². ΠΠ²Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π³ΠΎΠ²ΠΎΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π° ΡΠ½ΠΈΠΌΠΈ ΡΠ»ΠΈΠΊΡ nginx
ΡΠ° ΡΠ²ΠΈΠΌΠ΅ ΡΡΠΎ ΡΠ΅ Π²Π΅Ρ Π½Π°Π»Π°Π·ΠΈ Ρ ΡΠ΅ΠΌΡ ΠΈ ΠΊΠΎΠΏΠΈΡΠ°ΡΡΠ΅ ΡΠ°Π΄ΡΠΆΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ° build
Ρ ΠΈΠΌΠ΅Π½ΠΈΠΊ nginx/html
.
ΠΠ²Π΄Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠ°ΡΠΈ ΠΏΠΈΡΠ°ΡΠ΅ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π·Π½Π°ΠΌ Π³Π΄Π΅ ΡΠ°ΡΠ½ΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΈΠ· ΡΠ°ΡΡΠΈΠΊΠ»Π΅ build
, ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ ΠΎΠ΄Π°ΠΊΠ»Π΅ ΡΠ΅ ΠΏΡΡ Π΄ΠΎΡΠ°ΠΎ /usr/share/nginx/html
. Π£ ΡΡΠ²Π°ΡΠΈ, Π½ΠΈ ΠΎΠ²Π΄Π΅ Π½Π΅ΠΌΠ° Π½ΠΈΡΡΠ° ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ. Π§ΠΈΡΠ΅Π½ΠΈΡΠ° ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠ΅Π»Π΅Π²Π°Π½ΡΠ½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΡΠΈ Ρ
βΠΠ·ΡΠ°Π΄Π° ΡΠ»ΠΈΠΊΠ΅ ΠΈ ΠΎΡΠΏΡΠ΅ΠΌΠ°ΡΠ΅ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅
ΠΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΡΠ°Π΄ΠΈΠΌΠΎ ΡΠ° Π³ΠΎΡΠΎΠ²ΠΎΠΌ ΡΠ»ΠΈΠΊΠΎΠΌ, ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ Π³ΡΡΠ½Π΅ΠΌΠΎ Ρ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ ΡΠ»ΠΈΠΊΠ°. ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ΠΌΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π·Π° Ρ ΠΎΡΡΠΎΠ²Π°ΡΠ΅ ΡΠ»ΠΈΠΊΠ° Ρ ΠΎΠ±Π»Π°ΠΊΡ ΠΠΎΡΠΊΠ΅Ρ Π₯ΡΠ±. Π£ ΠΎΠ²ΠΎΡ ΡΠ°Π·ΠΈ ΡΠ°Π΄Π° ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΡΡΠ°Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅:
- ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ
Π»ΡΡΠΊΠΈ ΡΠ°Π΄Π½ΠΈΠΊ . - Π Π΅Π³ΠΈΡΡΡΡΡΡΠ΅ ΡΠ΅ Π½Π° Π²Π΅Π± Π»ΠΎΠΊΠ°ΡΠΈΡΠΈ ΠΠΎΡΠΊΠ΅Ρ Π₯ΡΠ±.
- ΠΡΠΈΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅ Π½Π° ΡΠ²ΠΎΡ Π½Π°Π»ΠΎΠ³ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ:
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
Π‘Π°Π΄Π° ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π΄Π° Π±ΠΈΡΡΠ΅ ΠΎΡΠΈΡΠ»ΠΈ ββΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ sa-frontend
ΠΈ ΡΠ°ΠΌΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
docker build -f Dockerfile -t $DOCKER_USER_ID/sentiment-analysis-frontend .
ΠΠ²Π΄Π΅ ΠΈ Π΄Π°ΡΠ΅ Ρ ΡΠ»ΠΈΡΠ½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠ° $DOCKER_USER_ID
ΡΡΠ΅Π±Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΠΈ Π²Π°ΡΠΈΠΌ ΠΠΎΡΠΊΠ΅Ρ Π₯ΡΠ± ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠΌ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ²Π°Ρ Π΄Π΅ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΌΠΎΠΆΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΎΠ²Π°ΠΊΠΎ: rinormaloku/sentiment-analysis-frontend
.
Π£ ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΠΊΡΠ°ΡΠΈΡΠΈ ΡΠΊΠ»Π°ΡΠ°ΡΠ΅ΠΌ ΠΈΠ· ΡΠ΅ -f Dockerfile
, ΠΏΠΎΡΡΠΎ ΠΎΠ²Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π²Π΅Ρ ΠΏΠΎΡΡΠΎΡΠΈ Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ Ρ ΠΊΠΎΡΠΎΡ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΠΌΠΎ ΠΎΠ²Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΠ° Π±ΠΈΡΠΌΠΎ Π³ΠΎΡΠΎΠ²Ρ ΡΠ»ΠΈΠΊΡ ΠΏΠΎΡΠ»Π°Π»ΠΈ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅, ΠΏΠΎΡΡΠ΅Π±Π½Π° Π½Π°ΠΌ ΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
docker push $DOCKER_USER_ID/sentiment-analysis-frontend
ΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ Π³Π° Π·Π°Π²ΡΡΠΈΡΠ΅, ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π»ΠΈΡΡΡ ΡΠ²ΠΎΡΠΈΡ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ° Π½Π° ΠΠΎΡΠΊΠ΅Ρ Π₯ΡΠ±-Ρ Π΄Π° Π±ΠΈΡΡΠ΅ ΡΠ°Π·ΡΠΌΠ΅Π»ΠΈ Π΄Π° Π»ΠΈ ΡΠ΅ ΠΎΡΠΏΡΠ΅ΠΌΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ Ρ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅ Ρ ΠΎΠ±Π»Π°ΠΊΡ Π±ΠΈΠ»ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
βΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°
Π‘Π°Π΄Π° ΡΠ²Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅ ΠΏΡΠ΅ΡΠ·Π΅ΡΠΈ ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΡΠ»ΠΈΠΊΡ, ΠΏΠΎΠ·Π½Π°ΡΡ ΠΊΠ°ΠΎ $DOCKER_USER_ID/sentiment-analysis-frontend
. ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠΈ Π½ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
docker pull $DOCKER_USER_ID/sentiment-analysis-frontend
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend
Π‘Π°Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΏΠΎΠΊΡΠ΅Π½ΡΡ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π½Π°ΡΡΠ°Π²ΠΈΡΠΈ ΡΠ° ΡΠ°Π΄ΠΎΠΌ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΡ
ΡΠ»ΠΈΠΊΠ° ΠΊΠΎΡΠ΅ ΡΡ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±Π½Π΅. ΠΠ»ΠΈ ΠΏΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ Π½Π°ΡΡΠ°Π²ΠΈΠΌΠΎ, Ρ
Π°ΡΠ΄Π΅ Π΄Π° ΡΠ°Π·ΡΠΌΠ΅ΠΌΠΎ Π΄ΠΈΠ·Π°ΡΠ½ 80:80
, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΡΡΡΠ΅ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΈ ΠΌΠΎΠΆΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ Π·Π±ΡΡΡΡΡΡΠ΅.
- ΠΡΠ²ΠΈ Π±ΡΠΎΡ
80
β ΠΎΠ²ΠΎ ΡΠ΅ Π±ΡΠΎΡ ΠΏΠΎΡΡΠ° Ρ ΠΎΡΡΠ° (ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ, Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠ°ΡΡΠ½Π°Ρ). - ΠΡΡΠ³ΠΈ Π±ΡΠΎΡ
80
ΡΠ΅ Π»ΡΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π½Π° ΠΊΠΎΡΡ ΡΡΠ΅Π±Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΠΈ Π·Π°Ρ ΡΠ΅Π².
Π Π°Π·ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΈΠ»ΡΡΡΡΠ°ΡΠΈΡΡ.
ΠΠΎΡΡ Π€ΠΎΡΠ²Π°ΡΠ΄ΠΈΠ½Π³
Π‘ΠΈΡΡΠ΅ΠΌ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠ°Π²Π° Π·Π°Ρ
ΡΠ΅Π²Π΅ ΡΠ° ΠΏΠΎΡΡΠ° <hostPort>
ΠΏΠΎ Π»ΡΡΠΈ <containerPort>
. ΠΠ΄Π½ΠΎΡΠ½ΠΎ, ΠΏΡΠΈΡΡΡΠΏ Π»ΡΡΠΈ 80
ΡΠ°ΡΡΠ½Π°Ρ ΡΠ΅ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠ°Π²Π° Π½Π° ΠΏΠΎΡΡ 80
ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ.
ΠΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΡΡΠ°Π½ΠΈΡΡΠ΅ 80
ΠΎΡΠ²ΠΎΡΠ΅Π½Π° Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ ΡΠ°ΡΡΠ½Π°ΡΡ, ΡΠ°Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΡΡΡΠΏΠΈΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠΈ ΡΠ° ΠΎΠ²ΠΎΠ³ ΡΠ°ΡΡΠ½Π°ΡΠ° Π½Π° Π°Π΄ΡΠ΅ΡΠΈ localhost:80
. ΠΠΊΠΎ Π²Π°Ρ ΡΠΈΡΡΠ΅ΠΌ Π½Π΅ ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΠΠΎΡΠΊΠ΅Ρ, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π½Π° ΠΠΎΡΠΊΠ΅Ρ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΎΡ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠΈΡΠ° ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΊΠ°ΠΎ <docker-machine ip>:80
. ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠ°Π·Π½Π°Π»ΠΈ ΠΠ Π°Π΄ΡΠ΅ΡΡ ΠΠΎΡΠΊΠ΅Ρ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ docker-machine ip
.
Π£ ΠΎΠ²ΠΎΠΌ ΡΡΠ΅Π½ΡΡΠΊΡ, Π½Π°ΠΊΠΎΠ½ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΡΡΠΎΠ½Ρ-Π΅Π½Π΄ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ Ρ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΡΠ΅Π³ΠΎΠ²Ρ ΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΡ.
βΠΠ°ΡΠΎΡΠ΅ΠΊΠ° .Π΄ΠΎΡΠΊΠ΅ΡΠΈΠ³Π½ΠΎΡΠ΅
ΠΡΠΈΠΊΡΠΏΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ SA-Frontend
, ΠΌΠΎΠ³Π»ΠΈ ΡΠΌΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠΈ Π΄Π° ΡΠ΅ ΠΎΠ²Π°Ρ ΠΏΡΠΎΡΠ΅Ρ ΠΈΡΠΏΠΎΡΡΠ°Π²ΡΠ° ΠΈΠ·ΡΠ·Π΅ΡΠ½ΠΎ ΡΠΏΠΎΡΠΈΠΌ. ΠΠ²ΠΎ ΡΠ΅ Π΄Π΅ΡΠ°Π²Π° Π·Π°ΡΠΎ ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ ΠΏΠΎΡΠ»Π°Ρ ΠΠΎΡΠΊΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½Ρ. ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΠΊΠΎΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ ΠΊΠ°ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ docker build
. Π£ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΏΠΎΡΡΠΎΡΠΈ ΡΠ°ΡΠΊΠ° Π½Π° ΠΊΡΠ°ΡΡ ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠΠ²ΠΎ ΡΠ·ΡΠΎΠΊΡΡΠ΅ Π΄Π° ΡΠ»Π΅Π΄Π΅ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π±ΡΠ΄Π΅ ΡΠΊΡΡΡΠ΅Π½Π° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅:
sa-frontend:
| .dockerignore
| Dockerfile
| package.json
| README.md
+---build
+---node_modules
+---public
---src
ΠΠ»ΠΈ ΠΎΠ΄ ΡΠ²ΠΈΡ
ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ ΠΏΡΠΈΡΡΡΠ½ΠΈΡ
ΠΎΠ²Π΄Π΅, ΠΏΠΎΡΡΠ΅Π±Π°Π½ Π½Π°ΠΌ ΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠΎΠ»Π΄Π΅Ρ build
. Π£ΡΠΈΡΠ°Π²Π°ΡΠ΅ Π±ΠΈΠ»ΠΎ ΡΠ΅Π³Π° Π΄ΡΡΠ³ΠΎΠ³ ΡΠ΅ Π³ΡΠ±ΡΠ΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ±ΡΠ·Π°ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΡΡ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅ ΡΠ΅ΡΠΈ ΠΠΎΡΠΊΠ΅Ρ-Ρ ΠΊΠΎΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ΅ Π΄Π° ΠΈΠ³Π½ΠΎΡΠΈΡΠ΅. ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΏΠΎΡΡΠ΅Π±Π°Π½ Π½Π°ΠΌ ΡΠ΅ ΡΠ°ΡΠ» .dockerignore
. ΠΠΈ, Π°ΠΊΠΎ ΡΡΠ΅ ΡΠΏΠΎΠ·Π½Π°ΡΠΈ ΡΠ° ΡΠ°ΡΠ»ΠΎΠΌ .gitignore
, ΡΡΡΡΠΊΡΡΡΠ° ΠΎΠ²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ΅ Π²Π΅ΡΠΎΠ²Π°ΡΠ½ΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠΈ ΠΏΠΎΠ·Π½Π°ΡΠΎ. ΠΠ½ Π½Π°Π²ΠΎΠ΄ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΠ΅ ΠΊΠΎΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ ΡΠ»ΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ³Π½ΠΎΡΠΈΡΠ΅. Π£ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΡΠ°Π΄ΡΠΆΠ°Ρ ΠΎΠ²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΎΠ²Π°ΠΊΠΎ:
node_modules
src
public
ΡΠ°ΡΠ» .dockerignore
ΠΌΠΎΡΠ° Π±ΠΈΡΠΈ Ρ ΠΈΡΡΠΎΡ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ ΠΊΠ°ΠΎ ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Dockerfile
. Π‘Π°Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ° ΡΠ»ΠΈΠΊΠ΅ ΡΡΠ°ΡΠ°ΡΠΈ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΡΠ°Π΄Π° ΡΠ°Π΄ΠΈΠΌΠΎ Π½Π° ΡΠ»ΠΈΡΠΈ Π·Π° ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ.
βΠΠ·ΡΠ°Π΄Π° ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π·Π° ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
ΠΠ½Π°ΡΠ΅ ΡΡΠ°, Π²Π΅Ρ ΡΡΠ΅ Π½Π°ΡΡΠΈΠ»ΠΈ ΡΠ²Π΅ ΡΡΠΎ Π²Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π΄Π° Π±ΠΈΡΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π»ΠΈ ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΠ°ΡΠΎ ΡΠ΅ ΠΎΠ²Π°Ρ ΠΎΠ΄Π΅ΡΠ°ΠΊ Π±ΠΈΡΠΈ Π²Π΅ΠΎΠΌΠ° ΠΊΡΠ°ΡΠ°ΠΊ.
Otvorite datoteku Dockerfile
ΠΊΠΎΡΠΈ ΡΠ΅ Π½Π°Π»Π°Π·ΠΈ Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° sa-webapp
. ΠΠΊΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅ ΡΠ΅ΠΊΡΡ ΠΎΠ²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅, Π²ΠΈΠ΄Π΅ΡΠ΅ΡΠ΅ ΡΠ°ΠΌΠΎ Π΄Π²Π΅ Π½ΠΎΠ²Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ΅ Ρ ΡΠΎΡ, ΠΏΠΎΡΠ΅Π²ΡΠΈ ΠΎΠ΄ ΠΊΡΡΡΠ½ΠΈΡ
ΡΠ΅ΡΠΈ ENV
ΠΈ EXPOSE
:
ENV SA_LOGIC_API_URL http://localhost:5000
β¦
EXPOSE 8080
ΠΡΡΡΠ½Π° ΡΠ΅Ρ ENV
ΠΠΌΠΎΠ³ΡΡΠ°Π²Π° Π²Π°ΠΌ Π΄Π° Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Π΅ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΡΠ½ΡΡΠ°Ρ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, Ρ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° Π½Π°Π²Π΅Π΄Π΅ΡΠ΅ Π£Π Π Π·Π° ΠΏΡΠΈΡΡΡΠΏ ΠΠΠ-ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΠ° Π²ΡΡΠΈ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ°.
ΠΡΡΡΠ½Π° ΡΠ΅Ρ EXPOSE
ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π²Π°ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΠΎΡΠΊΠ΅Ρ-Ρ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈ ΠΏΠΎΡΡ. ΠΠΎΡΠΈΡΡΠΈΡΠ΅ΠΌΠΎ ΠΎΠ²Π°Ρ ΠΏΠΎΡΡ Π΄ΠΎΠΊ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ. ΠΠ²Π΄Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠΈ Π΄Π° Ρ Dockerfile
Π·Π° ΠΏΡΠΈΠΌΠ΅Π½Ρ SA-Frontend
Π½Π΅ΠΌΠ° ΡΠ°ΠΊΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. ΠΠ²ΠΎ ΡΠ΅ ΡΠ°ΠΌΠΎ Π·Π° ΠΏΠΎΡΡΠ΅Π±Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅, Π΄ΡΡΠ³ΠΈΠΌ ΡΠ΅ΡΠΈΠΌΠ°, ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π° ΠΎΠ½ΠΎΠΌΠ΅ ΠΊΠΎ ΡΠ΅ ΡΠΈΡΠ°ΡΠΈ Dockerfile
.
ΠΠ·Π³ΡΠ°Π΄ΡΠ° ΡΠ»ΠΈΠΊΠ΅ ΠΈ ΡΠ΅Π½ΠΎ Π³ΡΡΠ°ΡΠ΅ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° ΠΏΠΎΡΠΏΡΠ½ΠΎ ΠΈΡΡΠΎ ΠΊΠ°ΠΎ Ρ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ. ΠΠΊΠΎ ΡΠΎΡ Π½ΠΈΡΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΠΈ Ρ ΡΠ²ΠΎΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ, ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠ΅ ΠΌΠΎΠ³Ρ Π½Π°ΡΠΈ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ README.md
Ρ ΡΠΎΠ»Π΄Π΅ΡΡ sa-webapp
.
βΠΠ·ΡΠ°Π΄Π° ΡΠ»ΠΈΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π·Π° ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ
ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ ΡΠ°Π΄ΡΠΆΠ°Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Dockerfile
Ρ ΡΠΎΠ»Π΄Π΅ΡΡ sa-logic
, ΠΎΠ½Π΄Π° ΡΠ°ΠΌΠΎ Π½Π΅ΡΠ΅ΡΠ΅ Π½Π°ΡΠΈ Π½ΠΈΡΡΠ° Π½ΠΎΠ²ΠΎ Π·Π° ΡΠ΅Π±Π΅. ΠΠΎΠΌΠ°Π½Π΄Π΅ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΈ ΡΠ»Π°ΡΠ΅ Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° Π²Π°ΠΌ Π±ΡΠ΄Ρ ΠΏΠΎΠ·Π½Π°ΡΠ΅, Π°Π»ΠΈ, ΠΊΠ°ΠΎ ΠΈ ΠΊΠΎΠ΄ Π΄ΡΡΠ³ΠΈΡ
Π½Π°ΡΠΈΡ
Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΌΠΎΠ³Ρ ΡΠ΅ Π½Π°ΡΠΈ Ρ Π΄Π°ΡΠΎΡΠ΅ΡΠΈ README.md
Ρ ΡΠΎΠ»Π΄Π΅ΡΡ sa-logic
.
βΠ’Π΅ΡΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΡΠΊΠΈΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²ΡΠ΅ΡΠΎΠ²Π°ΡΠΈ Π½Π΅ΡΠ΅ΠΌΡ ΡΡΠΎ Π½ΠΈΡΡΠ΅ ΡΠ΅ΡΡΠΈΡΠ°Π»ΠΈ? ΠΠ΅ ΠΌΠΎΠ³Ρ Π½ΠΈ ΡΠ°. Π₯Π°ΡΠ΄Π΅ Π΄Π° ΡΠ΅ΡΡΠΈΡΠ°ΠΌΠΎ Π½Π°ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅.
- Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
sa-logic
ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΈΡΠ΅ Π³Π° Π΄Π° ΡΠ»ΡΡΠ° Π½Π° ΠΏΠΎΡΡΡ5050
:docker run -d -p 5050:5000 $DOCKER_USER_ID/sentiment-analysis-logic
- Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
sa-webapp
ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΈΡΠ΅ Π³Π° Π΄Π° ΡΠ»ΡΡΠ° Π½Π° ΠΏΠΎΡΡΡ8080
. ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΠΌΠΎ ΠΏΠΎΡΡ Π½Π° ΠΊΠΎΡΠ΅ΠΌ ΡΠ΅ ΠΠΈΡΡ ΠΎΠ½ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ»ΡΡΠ°ΡΠΈ Π·Π°Ρ ΡΠ΅Π²Π΅ ΠΈΠ· ΠΠ°Π²Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠΎ ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π΄ΠΎΠ΄Π΅Π»ΠΈΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΎΠΊΡΡΠΆΠ΅ΡΠ°SA_LOGIC_API_URL
:$ docker run -d -p 8080:8080 -e SA_LOGIC_API_URL='http://<container_ip or docker machine ip>:5000' $DOCKER_USER_ID/sentiment-analysis-web-app
ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠ°Π·Π½Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ°Π·Π½Π°ΡΠ΅ ΠΠ Π°Π΄ΡΠ΅ΡΡ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈΠ»ΠΈ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ sa-frontend
:
docker run -d -p 80:80 $DOCKER_USER_ID/sentiment-analysis-frontend
Π‘Π°Π΄Π° ΡΠ΅ ΡΠ²Π΅ ΡΠΏΡΠ΅ΠΌΠ½ΠΎ Π·Π° ΠΎΠ΄Π»Π°Π·Π°ΠΊ Π½Π° Π°Π΄ΡΠ΅ΡΡ Ρ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΡ localhost:80
ΠΈ ΠΈΡΠΏΡΠΎΠ±Π°ΡΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ.
ΠΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° Π°ΠΊΠΎ ΡΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ»ΠΈ ΠΏΠΎΡΡ Π·Π° sa-webapp
, ΠΈΠ»ΠΈ Π°ΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΠΎΡΠΊΠ΅Ρ Π²ΠΈΡΡΡΠ΅Π»Π½Ρ ΠΌΠ°ΡΠΈΠ½Ρ, ΠΌΠΎΡΠ°ΡΠ΅ΡΠ΅ Π΄Π° ΡΡΠ΅Π΄ΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ App.js
ΠΈΠ· ΡΠ°ΡΡΠΈΠΊΠ»Π΅ sa-frontend
ΠΏΡΠΎΠΌΠ΅Π½ΠΎΠΌ ΠΠ Π°Π΄ΡΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π±ΡΠΎΡΠ° ΠΏΠΎΡΡΠ° Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΈ analyzeSentence()
, Π·Π°ΠΌΠ΅ΡΡΡΡΡΠΈ Π°ΠΊΡΡΠ΅Π»Π½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΡΠΌΠ΅ΡΡΠΎ Π·Π°ΡΡΠ°ΡΠ΅Π»ΠΈΡ
ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°. ΠΠ°ΠΊΠΎΠ½ ΡΠΎΠ³Π°, ΠΌΠΎΡΠ°ΡΠ΅ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΡΠ°ΡΡΠ°Π²ΠΈΡΠΈ ΡΠ»ΠΈΠΊΡ ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠ΅.
ΠΠ²Π°ΠΊΠΎ ΡΠ°Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π° Π½Π°Ρ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ ΡΠ°Π΄Π΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠΌΠ°
Π Π΅Π·ΠΈΠΌΠ΅: Π·Π°ΡΡΠΎ Π½Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π°Π½ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠ΅Ρ?
Π£ΠΏΡΠ°Π²ΠΎ ΡΠΌΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°Π»ΠΈ ΡΠ°ΡΠ»ΠΎΠ²Π΅ Dockerfile
, Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠΈ ΡΠ»ΠΈΠΊΠ΅ ΠΈ Π³ΡΡΠ½ΡΡΠΈ ΠΈΡ
Ρ ΠΠΎΡΠΊΠ΅Ρ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅. ΠΠΎΡΠ΅Π΄ ΡΠΎΠ³Π°, Π½Π°ΡΡΠΈΠ»ΠΈ ΡΠΌΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ±ΡΠ·Π°ΠΌΠΎ ΡΠ°ΡΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠ»ΠΈΠΊΠ΅ ΠΏΠΎΠΌΠΎΡΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ .dockerignore
. ΠΠ°ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠΎΠ³Π°, Π½Π°ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅ ΡΠ°Π΄Π° ΡΠ°Π΄Π΅ Ρ ΠΠΎΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈΠΌΠ°. ΠΠ²Π΄Π΅ ΡΠ΅ΡΠ΅ ΠΌΠΎΠΆΠ΄Π° ΠΈΠΌΠ°ΡΠΈ ΡΠ°ΡΠ²ΠΈΠΌ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΎ ΠΏΠΈΡΠ°ΡΠ΅ Π·Π°ΡΡΠΎ Π½Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π°Π½ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ. ΠΡΡΠ³ΠΈ Π΄Π΅ΠΎ ΠΎΠ²ΠΎΠ³ ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»Π° Π±ΠΈΡΠ΅ ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΡ Π½Π° ΠΎΠ²ΠΎ ΠΏΠΈΡΠ°ΡΠ΅. Π£ ΠΌΠ΅ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Ρ, ΡΠ°Π·ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΠ΅:
ΠΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π½Π°ΡΠ° Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·Ρ ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΡΡΠ°Π»Π° ΠΏΠΎΠΏΡΠ»Π°ΡΠ½Π° ΡΠΈΡΠΎΠΌ ΡΠ²Π΅ΡΠ°. Π‘Π²Π°ΠΊΠΎΠ³ ΠΌΠΈΠ½ΡΡΠ° ΠΌΡ ΡΡΠΈΠΆΡ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π·Π°Ρ
ΡΠ΅Π²Π°. Π’ΠΎ Π·Π½Π°ΡΠΈ Π΄Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ sa-webapp
ΠΈ sa-logic
Π±ΠΈΡΠ΅ ΠΏΠΎΠ΄ ΠΎΠ³ΡΠΎΠΌΠ½ΠΈΠΌ ΠΎΠΏΡΠ΅ΡΠ΅ΡΠ΅ΡΠ΅ΠΌ. ΠΠ°ΠΊΠΎ ΡΠΊΠ°Π»ΠΈΡΠ°ΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΊΠΎΡΠΈ ΠΏΠΎΠΊΡΠ΅ΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ΅?
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ
Π°Π±Ρ.ΡΠΎΠΌ