Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles

αžšαŸ€αž„αžšαžΆαž›αŸ‹αž–αžΈαžšαž”αžΈαž†αŸ’αž“αžΆαŸ†αž˜αŸ’αžαž„ αž§αžŸαŸ’αžŸαžΆαž αž€αž˜αŸ’αž˜αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‚αŸ†αžšαžΌαŸ” αž”αžΆαžαž»αž—αžΌαžαž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž”αžΆαžαž»αž—αžΌαžαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹αžαžΆαž‡αžΆαž…αŸ†αžŽαžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž€αžΎαž“αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ†αž“αž·αžαž“αŸƒαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αžΈαž€αŸ’αžšαžΌαŸ” αžαŸ’αžœαžΈαžαŸ’αž”αž·αžαžαŸ‚αžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαžαŸ’αž˜αžΈαž”αŸ†αž•αž»αžαž€αŸαžŠαŸ„αž™ αž€αŸαž‘αžΎαž”αžαŸ‚αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡αžŠαŸ‚αžš αžŠαŸ‚αž›αž”αŸ’αžšαž‡αžΆαž”αŸ’αžšαž·αž™αž—αžΆαž–αžšαž”αžŸαŸ‹αžœαžΆαž”αžΆαž“αž€αžΎαž“αž‘αžΎαž„αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αŸ”

សេវអ monolithic αžŠαŸαž’αŸ†αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ†αž“αž½αžŸαžŠαŸ„αž™αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αžΈαž€αŸ’αžšαžΌαžŸαŸ’αžœαž™αŸαžαž―αž€αžšαžΆαž‡αŸ’αž™αŸ” αžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž‚αž·αžαžαžΆαž‡αžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž”αž˜αŸ’αžšαžΎαž‚αŸ„αž›αž”αŸ†αžŽαž„αžαŸ‚αž˜αž½αž™ αž“αž·αž„αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž”αŸ†αž•αž»αžαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αžœαžΆαž’αžΆαž…αž‡αžΆ DBMS αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Express សេវអ Solr αŸ”

Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles

αžŸαž–αŸ’αžœαžαŸ’αž„αŸƒαž“αŸαŸ‡ αžœαžΆαž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžšαž˜αŸƒαžαžΆαž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαžΌαž αŸ’αžœαžœαŸ‚αžšαžαŸ’αž˜αžΈαžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžΎαžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌαŸ” αž αžΎαž™αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸαŸ‡αž“αžΆαŸ†αž™αžΎαž„αž‘αŸ…αž€αžΆαž“αŸ‹αžœαŸαž‘αž·αž€αžΆ Docker αŸ”

Dockers

αžœαŸαž‘αž·αž€αžΆ Dockersαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸ αž“αž·αž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αž±αŸ’αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαŸαžœαžΆαž˜αžΈαž€αŸ’αžšαžΌ αž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‡αžΆαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž§αžŸαŸ’αžŸαžΆαž αž€αž˜αŸ’αž˜αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αž“αŸ…αž›αžΎαž‚αŸαž αž‘αŸ†αž–αŸαžšαžšαž”αžŸαŸ‹αž‚αž˜αŸ’αžšαŸ„αž„ αž’αŸ’αž“αž€αž’αžΆαž…αžŠαžΉαž„αžαžΆ Docker αž‚αžΊαž‡αžΆαžœαŸαž‘αž·αž€αžΆαž•αŸ’αž‘αž»αž€αž―αž€αžšαžΆαž‡αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αž„αŸ’αž‚αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŽαžΆαž˜αž½αž™αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαž·αžαžαŸ†αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„ αž€αŸαžŠαžΌαž…αž‡αžΆαž…αŸ‚αž€αž…αžΆαž™ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αž½αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαžŽαžΆαž˜αž½αž™ - αž–αžΈαž–αž–αž€αž€αžΌαž“αž€αžΆαžαŸ‹αž‘αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ‚αž˜αŸ”

សរសេរ Docker

αž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆ សរសេរ Docker αžšαž…αž“αžΆαž‘αžΎαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž–αž αž»αž€αž»αž„αžαžΊαž“αŸαžšαŸ” αž‚αž˜αŸ’αžšαŸ„αž„ Docker Compose αž’αžΆαž…αž˜αžΆαž“αž€αž»αž„αžαžΊαž“αŸαžš Docker αž…αŸ’αžšαžΎαž“αžαžΆαž˜αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž‚αž˜αŸ’αžšαŸ„αž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαŸ”

αž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Docker Compose αž―αž€αžŸαžΆαžš YAML αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αžšαŸ€αž”αž…αŸ†αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ Docker Compose αž‚αžΊαž‡αžΆαž§αž”αž€αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž·αž–αžŽαŸŒαž“αžΆ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Docker αž…αŸ’αžšαžΎαž“αž€αž»αž„αžαžΊαž“αŸαžšαŸ”

Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles
αž’αž»αž„αž–αžΈαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“

αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“ GNU Make

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡ makeαž‡αžΆαž§αž”αž€αžšαžŽαŸαžŸαŸ†αžαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αž·αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž–αžΈαž”αŸ’αžšαž—αž–αž€αžΌαžŠαŸ” αž‡αžΆαž‘αžΌαž‘αŸ…αž™αžΎαž„αž’αžΆαž…αž“αž·αž™αžΆαž™αž”αžΆαž“αŸ” make αž’αž“αž»αžœαžαŸ’αžαž…αŸ†αž–αŸ„αŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž˜αž’αŸ†αž–αžΎαž…αž·αžαŸ’αž αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž”αŸ’αž›αŸ‚αž„αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž”αž‰αŸ’αž…αžΌαž›αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‘αŸ…αž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž›αž‘αŸ’αž’αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž‘αŸ…αž€αžΆαž“αŸ‹αž‚αŸ„αž›αžŠαŸ…αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ docker-compose αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ†αž”αŸ’αž›αŸ‚αž„αž‘αŸ…αž‡αžΆαž‚αŸ„αž›αžŠαŸ…αž’αžšαžΌαž”αžΈ (αž‚αŸ„αž›αžŠαŸ…αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘).

αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ make αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž”αžΆαž“αž–αžΈαžœαžΆ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž―αž€αžŸαžΆαžš Makefile.

αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αžŸαŸ‹αž™αžΎαž„ Makefile αž“αžΉαž„αž˜αžΆαž“αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαŸ” docker ΠΈ docker-composeαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž˜αžΆαž“αž“αŸαž™αžαžΆ αž™αžΎαž„αž€αŸ†αž–αž»αž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž€αžΆαžšαž•αŸ’αž‚αž»αŸ†αž€αž»αž„αžαžΊαž“αŸαžš αž’αŸ†αž–αžΈαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžœαžΆ αž”αž‰αŸ’αžˆαž”αŸ‹αžœαžΆ αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžœαžΆαž‘αžΎαž„αžœαž·αž‰ αž’αŸ†αž–αžΈαž€αžΆαžšαžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž…αžΌαž›αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αŸ…αž€αžΆαž“αŸ‹αž€αž»αž„αžαžΊαž“αŸαžš αž’αŸ†αž–αžΈαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž€αž»αž„αžαžΊαž“αŸαžš αž“αž·αž„αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αž€αžšαžŽαžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αž˜αŸ’αž˜αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Docker Compose

αžαŸ„αŸ‡αžŸαŸ’αžšαž˜αŸƒαž˜αžΎαž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸαž αž‘αŸ†αž–αŸαžšαž’αž˜αŸ’αž˜αžαžΆαžŠαŸ‚αž›αž˜αžΆαž“αž’αžΆαžαž»αž•αŸ’αžŸαŸ†αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™ TimescaleDB (Postgres) αŸ”
  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Express.js αŸ”
  • αž—αžΈαž„ (αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž’αž»αž„αž˜αž½αž™αž˜αž·αž“αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαž–αž·αžŸαŸαžŸαž‘αŸ) αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž’αž»αž„ Docker αž…αŸ†αž“αž½αž“ 3 αž“αž·αž„αž―αž€αžŸαžΆαžšαž˜αž½αž™αŸ” 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.

Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles
αž‡αŸ†αž“αž½αž™αž›αžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž˜αžΆαž“

  • make build - αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αžšαžΌαž”αž—αžΆαž–αž–αžΈ Dockerfile. αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž”αžΆαž“αž”αŸ’αžšαžΎαžšαžΌαž”αž—αžΆαž–αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ timescale ΠΈ ping. αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžšαžΌαž”αž—αžΆαž– api αž™αžΎαž„αž…αž„αŸ‹αž”αŸ’αžšαž˜αžΌαž›αž€αŸ’αž“αž»αž„αžŸαŸ’αžšαž»αž€αŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αŸαŸ‡αŸ”

Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles
αž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹αž’αž»αž„ Docker

  • make start - αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž„αžαžΊαž“αŸαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž„αžαžΊαž“αŸαžšαžαŸ‚αž˜αž½αž™ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαžΌαž…αž‡αžΆ make start c=timescale.

Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles
αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž„αžαžΊαž“αŸαžšαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ

Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles
αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž„αžαžΊαž“αŸαžš ping

  • make login-timescale - αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αžœαž‚αŸ’αž‚ bash αž“αŸƒαž€αž»αž„αžαžΊαž“αŸαžš timescale.

Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles
αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš bash αž“αŸ…αž€αŸ’αž“αž»αž„αž’αž»αž„αž–αŸαž›αžœαŸαž›αžΆ

  • make db-shell - αž…αŸ’αžšαž€αž…αžΌαž› psql αž“αŸ…αž€αŸ’αž“αž»αž„αž’αž»αž„αž˜αž½αž™αŸ” timescale αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŸαŸ†αžŽαž½αžš SQL αž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”

Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles
αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš psql αž“αŸ…αž€αŸ’αž“αž»αž„αž’αž»αž„ timescaledb

  • make stop - αž€αžΆαžšαž”αž‰αŸ’αžˆαž”αŸ‹αž’αž»αž„αŸ”

Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles
αž€αžΆαžšαž”αž‰αŸ’αžˆαž”αŸ‹αž€αž»αž„αžαžΊαž“αŸαžšαž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆ

  • make down - αž”αž‰αŸ’αžˆαž”αŸ‹ αž“αž·αž„αž™αž€αž’αž»αž„αž…αŸαž‰αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž›αž»αž”αž€αž»αž„αžαžΊαž“αŸαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αŸαŸ‡αžŠαŸ‚αž›αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αž»αž„αžαžΊαž“αŸαžšαžŠαŸ‚αž›αž…αž„αŸ‹αž”αžΆαž“αŸ” αž§αž‘αžΆαž αžšαžŽαŸ - make down c=timescale ឬ make down c=api.

Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles
αž€αžΆαžšαž”αž‰αŸ’αžˆαž”αŸ‹ αž“αž·αž„αž›αž»αž”αž€αž»αž„αžαžΊαž“αŸαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”

αž›αž‘αŸ’αž’αž•αž›

αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆ 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αž“αŸαŸ‡αž‡αž½αž™αžŸαž˜αŸ’αžšαž½αž›αžŠαž›αŸ‹αž€αž·αž…αŸ’αž…αžŸαž αž€αžΆαžš αž“αž·αž„αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αŸ†αž αž»αžŸαŸ”

PS αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αžŸαŸ‹αž™αžΎαž„ αž‘αžΈαž•αŸ’αžŸαžΆαžš αž˜αžΆαž“αžšαžΌαž”αž—αžΆαž–αž˜αž½αž™αŸ” DockersαžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžŠαŸ„αž™αž…αž»αž…αžαŸ‚αž˜αŸ’αžαž„αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸƒαž’αž»αž„αž“αŸ… αž€αžΆαžš VPS. αž’αžαž·αžαž·αž‡αž“αžαŸ’αž˜αžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αžšαž™αŸˆαž–αŸαž› 3 αžαŸ’αž„αŸƒαžŠαŸ„αž™αž˜αž·αž“αž‚αž·αžαžαŸ’αž›αŸƒαŸ”

αž’αŸ’αž“αž€αž’αžΆαž“αž‡αžΆαž‘αžΈαžŸαŸ’αžšαž‘αžΆαž‰αŸ‹! αžαžΎαž’αŸ’αž“αž€αž’αŸ’αžœαžΎαžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜ Docker Compose αžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ?

Docker ComposeαŸ– αžŸαž˜αŸ’αžšαž½αž›αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎ Makefiles

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹