ΠΠ° Π²ΡΠ΅ΠΊΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ Π² ΠΈΠ½Π΄ΡΡΡΡΠΈΡΡΠ° Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ½Π°ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π°ΡΡΡΠΏΠ²Π° ΡΠΌΡΠ½Π° Π½Π° ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°ΡΠ°. ΠΠ΄Π½ΠΎ ΠΎΡ ΡΠ°ΠΊΠΈΠ²Π° ΡΠ²Π»Π΅Π½ΠΈΡ Π΅ Π½Π°ΡΠ°ΡΡΠ²Π°ΡΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΊΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ. ΠΠ°ΠΊΠ°Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΈΡΠ΅ Π΄Π° Π½Π΅ ΡΠ° Π½Π°ΠΉ-Π½ΠΎΠ²Π°ΡΠ° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, Π΅Π΄Π²Π° Π½Π°ΡΠΊΠΎΡΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡΠ° ΠΈΠΌ Π±ΡΠΊΠ²Π°Π»Π½ΠΎ ΡΠ΅ ΠΈΠ·ΡΡΡΠ΅Π»Ρ Π² Π½Π΅Π±Π΅ΡΠ°ΡΠ°.
ΠΠ½Π΅Ρ Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡ Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ. ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ»ΡΠΆΠΈ Π·Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° ΡΠ΅Π». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ β ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½Π° Π‘Π£ΠΠ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Express, Solr ΡΡΠ»ΡΠ³Π°.
Π Π½Π°ΡΠΈ Π΄Π½ΠΈ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²Π° ΡΠΎΡΡΡΠ΅ΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ. Π ΡΠ°Π·ΠΈ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΎΡ ΡΠ²ΠΎΡ ΡΡΡΠ°Π½Π°, Π½ΠΈ Π²ΠΎΠ΄ΠΈ ΠΊΡΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Docker.
Docker
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° , Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ, ΡΡΠ°Π½Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ½Π΄ΡΡΡΡΠΈΠ°Π»Π΅Π½ ΡΡΠ°Π½Π΄Π°ΡΡ. ΠΠ° ΡΠ°ΠΉΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΡΠΈ, ΡΠ΅ Docker Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°Ρ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° ΡΡΡΠΎ ΠΈ Π΄Π° Π³ΠΈ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Ρ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Ρ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ β ΠΎΡ Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ ΠΎΠ±Π»Π°ΡΠΈ Π΄ΠΎθΎΉθΎΉΠ΄ΠΆ ΡΠΈΡΡΠ΅ΠΌΠΈ.
Docker Compose
Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° Docker Compose ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²Π»ΠΈΠ·Π°Ρ ΡΠΎΠ»ΠΊΠΎΠ²Π° Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΡΠ° Π½ΡΠΆΠ½ΠΈ Π½Π° ΡΡΠ·Π΄Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Docker Compose, Π·Π° Π½Π°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡ Π½ΠΎΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠΌ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° YAML ΡΠ°ΠΉΠ». Docker Compose, ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Docker.

ΠΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π½Π° Ρ
ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°
GNU Make
ΠΡΠΎΠ³ΡΠ°ΠΌΠ° Π½Π°ΠΏΡΠ°Π²ΠΈ, ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΡ ΠΈΠ·Ρ
ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄. ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΡΠΎΠ²Π°, ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠ° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΡΠ΅Ρ, ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ, Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠ΅Π». Π Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ docker-compose ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ΠΈ Π² Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΈ ΡΠ΅Π»ΠΈ ().
ΠΠ° Π΄Π° ΡΠ²Π΅Π΄ΠΎΠΌΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ ΠΎΡ Π½Π΅Ρ, ΡΠ΅ Π½ΠΈ ΡΡΡΠ±Π²Π° ΡΠ°ΠΉΠ» Makefile.
Π Π½Π°ΡΠΈΡ Makefile Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ docker ΠΈ docker-compose, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ, ΡΡΠ°Π²Π° Π΄ΡΠΌΠ° Π·Π° ΡΠ³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π·Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅, ΡΠΏΠΈΡΠ°Π½Π΅, ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅, Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π²Ρ
ΠΎΠ΄Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ.
Π’ΠΈΠΏΠΈΡΠ½ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Docker Compose
ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅ΡΠ΅ ΡΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠΌΠ° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ:
- ΠΠ°Π·Π° Π΄Π°Π½Π½ΠΈ TimescaleDB (Postgres).
- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Express.js.
- Ping (ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Π½ΠΈΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ).
ΠΠ° ΡΠΎΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ ΡΠ° ΠΌΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ 3 Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΡΠ°ΠΉΠ» docker-compose, ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. ΠΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΡΠ΅ ΠΈΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° timescale ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠΎ-ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, ΡΠΎΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
- ΠΠ»ΠΈΠ·Π°Π½Π΅ Π² ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π½Π° Postgres.
- ΠΠΌΠΏΠΎΡΡ ΠΈ Π΅ΠΊΡΠΏΠΎΡΡ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ.
- ΡΠ°ΠΌΠΎ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠΈΠ»ΠΈΡ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ ΡΡΠΊ Π½Π° ΡΡΠ΅Π½Π°ΡΠ° ΠΈΠ·Π»ΠΈΠ·Π° VFS. Linux ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π²
pg_dumpΡΠ°Π±Π»ΠΈΡΠΈ ΠΈΠ»ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ Π½Π° Express.js ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, expressjs, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° ΡΡΡ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
- ΠΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π°ΠΊΡΡΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΆΡΡΠ½Π°Π».
- ΠΠ»ΠΈΠ·Π°Π½Π΅ Π² ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π½Π°ΡΡΡΠΎΠΈΠΌ Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Docker Compose, Π΅ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΡΠ΅Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. Π ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Docker Compose ΠΈΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° docker-compose, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΠΏΡΠΈΡΡΠ° -f, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΠΏΡΠ΅Ρ
Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΡΠ°ΠΉΠ»Π° docker-compose.yml.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΠΎΠΏΡΠΈΡ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ°ΠΌΠΎ Π΄ΠΎ ΡΠ΅Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° docker-compose.yml.
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅ docker-compose. ΠΠΊΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π²Π»Π΅Π·Π΅ΠΌ Π² ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° psql, ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ ΡΠ°ΠΊΠ°:
docker-compose -f docker-compose.yml exec timescale psql -Upostgres Π‘ΡΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π·Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ docker-compose, Π° docker, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
docker exec -it edp_timescale_1 psql -Upostgres ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π·Π° ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½Π΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° docker, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° docker-compose, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ Π·Π°ΠΏΠΎΠΌΠ½ΡΠ½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅.
Π Π΄Π²Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈ ΠΏΠΎ-Π³ΠΎΡΠ΅, Π½Π΅ ΡΠ° ΡΠΎΠ»ΠΊΠΎΠ²Π° ΡΠ»ΠΎΠΆΠ½ΠΈ. ΠΠΎ Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
ΠΌΠ΅ βΠΎΠ±Π²ΠΈΠ²ΠΊΠ°β Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Makefile, ΠΊΠΎΡΡΠΎ Π±ΠΈ Π½ΠΈ Π΄Π°Π»Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ ΡΠ°ΠΌΠ° Π±ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π»Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π΄ΡΠ»Π³ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΡΠΎ ΡΡΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π±ΠΈΡ
Π° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ ΡΠ°ΠΊΠ°:
make db-shell Π‘ΡΠ²ΡΠ΅ΠΌ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π΅, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Makefile Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ!
Π Π°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ
ΠΠ° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°Π½Π°ΡΠ° ΡΡ
Π΅ΠΌΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ°ΠΉΠ» docker-compose.yml:
version: '3.3'
services:
Β Β Β Β api:
Β Β Β Β Β Β Β Β build: .
Β Β Β Β Β Β Β Β image: mywebimage:0.0.1
Β Β Β Β Β Β Β Β ports:
Β Β Β Β Β Β Β Β Β Β Β Β - 8080:8080
Β Β Β Β Β Β Β Β volumes:
Β Β Β Β Β Β Β Β Β Β Β Β - /app/node_modules/
Β Β Β Β Β Β Β Β depends_on:
Β Β Β Β Β Β Β Β Β Β Β Β - timescale
Β Β Β Β Β Β Β Β command: npm run dev
Β Β Β Β Β Β Β Β networks:
Β Β Β Β Β Β Β Β Β Β Β Β - webappnetwork
Β Β Β Β timescale:
Β Β Β Β Β Β Β Β image: timescale/timescaledb-postgis:latest-pg11
Β Β Β Β Β Β Β Β environment:
Β Β Β Β Β Β Β Β Β Β - POSTGRES_USER=postgres
Β Β Β Β Β Β Β Β Β Β - POSTGRES_PASSWORD=postgres
Β Β Β Β Β Β Β Β command: ["postgres", "-c", "log_statement=all", "-c", "log_destination=stderr"]
Β Β Β Β Β Β Β Β volumes:
Β Β Β Β Β Β Β Β Β Β - ./create_schema.sql:/docker-entrypoint-initdb.d/create_schema.sql
Β Β Β Β Β Β Β Β networks:
Β Β Β Β Β Β Β Β Β Β Β - webappnetwork
Β Β Β Β ping:
Β Β Β Β Β Β Β image: willfarrell/ping
Β Β Β Β Β Β Β environment:
Β Β Β Β Β Β Β Β Β Β Β HOSTNAME: "localhost"
Β Β Β Β Β Β Β Β Β Β Β TIMEOUT: 300
networks:
Β Β Β webappnetwork:
Β Β Β Β Β Β Β driver: bridge ΠΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Docker Compose ΠΈ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΡ ΠΎΠΏΠΈΡΠ²Π°, ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ°ΠΉΠ» Makefile:
THIS_FILE := $(lastword $(MAKEFILE_LIST))
.PHONY: help build up start down destroy stop restart logs logs-api ps login-timescale login-api db-shell
help:
Β Β Β Β Β Β Β Β make -pRrq -f $(THIS_FILE) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
build:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml build $(c)
up:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml up -d $(c)
start:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml start $(c)
down:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml down $(c)
destroy:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml down -v $(c)
stop:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml stop $(c)
restart:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml stop $(c)
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml up -d $(c)
logs:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml logs --tail=100 -f $(c)
logs-api:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml logs --tail=100 -f api
ps:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml ps
login-timescale:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml exec timescale /bin/bash
login-api:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml exec api /bin/bash
db-shell:
Β Β Β Β Β Β Β Β docker-compose -f docker-compose.yml exec timescale psql -Upostgres ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΠΊΡΠΌ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΡΠΈΡΡΠ° c= ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈ ΠΎΠ±Ρ
Π²Π°ΡΡΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π΄ΠΎ Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Makefile Π³ΠΎΡΠΎΠ², ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΊΠ°:
make helpβ ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΠΏΠΈΡΡΠΊ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π½Π°Π»ΠΈΡΠ½ΠΈ Π·Π°Π½Π°ΠΏΡΠ°Π²ΠΈ.

ΠΠΎΠΌΠΎΡ ΠΏΠΎ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ
make buildβ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π· ΠΎΡDockerfile. Π Π½Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΎΠ±ΡΠ°Π·ΠΈtimescaleΠΈping. ΠΠΎ ΠΎΠ±ΡΠ°Π·ΡΡapiΠΊΠΎΠ΅ΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΡΠ±Π΅ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΎ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ ΡΠ»Π΅Π΄ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°.

Π‘Π³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π½Π° Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ
make startβ ΡΡΠ°ΡΡΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. ΠΠ° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΡΠ°ΠΌΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ Π²ΠΈΠ΄Π°make start c=timescale.

Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° timescale

Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ping
make login-timescaleβ Π²Ρ ΠΎΠ΄ Π² bash ΡΠ΅ΡΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°timescale.

Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° bash Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° timescale
make db-shellβ Π²Ρ ΠΎΠ΄ Π²psqlΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡtimescaleΠ·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° SQL Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.

Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° psql Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° timescaledb
make stopβ ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅.
![]()
Π‘ΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° timescale
make downβ ΡΠΏΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅. ΠΠ° Π΄Π° ΡΠ΅ ΠΈΠ·ΡΡΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π½ΡΠΆΠ½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ βmake down c=timescaleΠΈΠ»ΠΈmake down c=api.

Π‘ΠΏΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ
Π Π΅Π·ΡΠΌΠ΅
ΠΡΠΏΡΠ΅ΠΊΠΈ, ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Docker Compose ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π° Ρ ΠΎΠ±ΡΠΈΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΡΠ°Π²Π°Ρ Π΄ΡΠ»Π³ΠΈ ΠΈ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°ΠΏΠΎΠΌΠ½Π΅Π½ΠΈ.
ΠΠ΅ΡΠΎΠ΄ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Makefile Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π΄Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π±ΡΡΠ·Π° ΠΈ Π»Π΅ΡΠ½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΠΎΡ ΡΠ°ΠΉΠ»Π° docker-compose.yml. Π ΠΈΠΌΠ΅Π½Π½ΠΎ, ΡΡΠ°Π²Π° Π΄ΡΠΌΠ° Π·Π° ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
- Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ°ΠΌΠΎ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π²
docker-compose.yml, ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π΅ ΠΏΡΠ΅ΡΠΈ Π½Π° Π΄ΡΡΠ³ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. - Π ΡΠ»ΡΡΠ°ΠΉ, ΡΠ΅ Π΅ Π·Π°Π±ΡΠ°Π²Π΅Π½Π° Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°
make helpΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΠΎΠΌΠΎΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. - ΠΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΡΡΠ΅ Π΄ΡΠ»Π³ΠΈ ΡΠΏΠΈΡΡΡΠΈ ΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ, Π·Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΡΠ°ΠΊΠΈΠ²Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π½Π° ΠΆΡΡΠ½Π°Π»Π° ΠΈΠ»ΠΈ Π²Ρ
ΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡ Π²ΠΈΠ΄Π°
docker-compose -f docker-compose.yml exec timescale psql -UpostgresΡΠ΅ ΠΏΡΠ΅Π²ΡΡΡΠ° Π²make db-shell. - Π€Π°ΠΉΠ»
MakefileΠΌΠΎΠΆΠ΅, Ρ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΄Π° Π±ΡΠ΄Π΅ Π³ΡΠ²ΠΊΠ°Π²ΠΎ Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π½Π΅Π³ΠΎ Π½Π΅ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΡΠΊΠΎ Π΄ΡΡΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. - ΠΠΊΠΎ Π³ΠΎΠ»ΡΠΌ Π΅ΠΊΠΈΠΏ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ°
Makefile, ΡΠΎΠ²Π° ΠΏΠΎΠ΄ΡΠ΅ΠΆΠ΄Π° ΡΡΠ²ΠΌΠ΅ΡΡΠ½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π±ΡΠΎΡ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅.
P.S. Π Π½Π°ΡΠΈΡ ΠΈΠΌΠ° ΠΎΠ±ΡΠ°Π· , ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Ρ Π΅Π΄Π½ΠΎ ΠΊΠ»ΠΈΠΊΠ²Π°Π½Π΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π½Π° . ΠΠ° Π²ΡΠΈΡΠΊΠΈ Π½ΠΎΠ²ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎ 3 Π΄Π½ΠΈ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅.
Π£Π²Π°ΠΆΠ°Π΅ΠΌΠΈ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! ΠΠ°ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Docker Compose?
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
