ΠΠ°ΠΆΠ΄ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π² ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΌΠ΅Π½Π° ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ·Π½Π°ΡΡ ΡΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ². Π₯ΠΎΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ β ΡΡΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Π½Π΅ ΡΠ°ΠΌΠ°Ρ Π½ΠΎΠ²Π°Ρ, Π»ΠΈΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π΅Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ Π²Π·Π»Π΅ΡΠ΅Π»Π° Π΄ΠΎ Π½Π΅Π±Π΅Ρ.
ΠΠΎΠ»ΡΡΠΈΠ΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ Π² Π½Π°ΡΠΈ Π΄Π½ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΌΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ»ΡΠΆΠΈΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈ ΠΎΡΠ΅Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅Π»ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ β ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ Π‘Π£ΠΠ, Express-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Solr-ΡΠ΅ΡΠ²ΠΈΡ.
Π Π½Π°ΡΠΈ Π΄Π½ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π±Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π½ΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π±Π΅Π· ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ². Π ΡΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π²Π΅Π΄ΡΡ Π½Π°Ρ ΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Docker.
Docker
ΠΠ»Π°ΡΡΠΎΡΠΌΠ°
Docker Compose
Π’Π΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡ
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Docker Compose Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ YAML-ΡΠ°ΠΉΠ». Docker Compose, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Docker.
ΠΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Π½Π° Ρ
ΠΎΡΡ-ΡΠΈΡΡΠ΅ΠΌΠ΅
GNU Make
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° make
, ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈΠ· ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π ΡΠ΅Π»ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ make
ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΈΡ
ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΠΊ Π½Π΅ΠΊΠΎΠ΅ΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΌΡ Π²ΠΈΠ΄Ρ, ΠΊ Π½Π΅ΠΊΠΎΠ΅ΠΉ ΡΠ΅Π»ΠΈ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ docker-compose
Π±ΡΠ΄ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π² Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΡΠ΅Π»ΠΈ (
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ make
ΠΎ ΡΠΎΠΌ, ΡΠ΅Π³ΠΎ ΠΌΡ ΠΎΡ Π½Π΅Ρ Ρ
ΠΎΡΠΈΠΌ, Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠ°ΠΉΠ» Makefile
.
Π Π½Π°ΡΠ΅ΠΌ Makefile
Π±ΡΠ΄ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ docker
ΠΈ docker-compose
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π·Π°Π΄Π°Ρ. Π ΠΈΠΌΠ΅Π½Π½ΠΎ, ΡΠ΅ΡΡ ΠΈΠ΄ΡΡ ΠΎ ΡΠ±ΠΎΡΠΊΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΎ Π΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅, ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅, ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ΅, ΠΎΠ± ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π²Ρ
ΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π»ΠΎΠ³Π°ΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
Π·Π°Π΄Π°Ρ.
Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Docker Compose
ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠ΅Π±Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠΌΠ΅ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ TimescaleDB (Postgres).
- Express.js-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
- Ping (ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡΠΈΠΉ).
ΠΡΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ 3 ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Docker ΠΈ ΡΠ°ΠΉΠ» docker-compose
, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ timescale
ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
. Π ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
- ΠΡ ΠΎΠ΄ Π² ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Postgres.
- ΠΠΌΠΏΠΎΡΡ ΠΈ ΡΠΊΡΠΏΠΎΡΡ ΡΠ°Π±Π»ΠΈΡ.
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅
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
.
Π‘ΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ
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. Π Π½Π°ΡΠ΅ΠΌ
Π£Π²Π°ΠΆΠ°Π΅ΠΌΡΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! ΠΠ°ΠΊ Π²Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅ΡΠ΅ ΡΠ°Π±ΠΎΡΡ Ρ Docker Compose?
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com