Docker Compose: เป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบฝเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ Makefiles

เบ—เบธเบเป†เบชเบญเบ‡เบชเบฒเบกเบ›เบต, เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบงเป„เบ”เป‰เบœเปˆเบฒเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบšเบšเปเบœเบ™. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ›เบฐเบเบปเบ”เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒเป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เปƒเบ™เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ™เบฅเบฐเบžเบฒเบ. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ™เบฅเบฐเบžเบฒเบเบšเปเปˆเปเบกเปˆเบ™เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบŠเบตเปƒเบซเบกเปˆเบ—เบตเปˆเบชเบธเบ”, เบžเบฝเบ‡เปเบ•เปˆเบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰เบกเบตเบ„เบงเบฒเบกเบ™เบดเบเบปเบกเบ‚เบญเบ‡เบ•เบปเบ™ skyrockets เบฎเบนเป‰เบซเบ™เบฑเบ‡เบชเบท.

เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ monolithic เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ—เบปเบ”เปเบ—เบ™เป‚เบ”เบ microservices เป€เบญเบเบฐเบฅเบฒเบ”, เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”. เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ™เบฅเบฐเบžเบฒเบเบชเบฒเบกเบฒเบ”เบ„เบดเบ”เป„เบ”เป‰เบงเปˆเบฒเป€เบ›เบฑเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ”เบฝเบง เปเบฅเบฐเบชเบฐเป€เบžเบฒเบฐเบซเบผเบฒเบ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™ DBMS เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Express, เบšเปเบฅเบดเบเบฒเบ™ Solr.

Docker Compose: เป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบฝเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ Makefiles

เบกเบทเป‰เบ™เบตเป‰, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบฅเบฐเบšเบปเบšเบŠเบญเบšเปเบงเปƒเบซเบกเปˆเป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰ microservices. เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบตเป‰, เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, เบ™เปเบฒเบžเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ›เบชเบนเปˆเป€เบงเบ—เบต Docker.

Docker

เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Docker, เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ, เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เป€เบเบทเบญเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบญเบธเบ”เบชเบฒเบซเบฐเบเปเบฒ. เบขเบนเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบปเป‰เบ™เบžเบปเบšเบงเปˆเบฒ Docker เป€เบ›เบฑเบ™เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก containerization เป€เบญเบเบฐเบฅเบฒเบ”เบ”เบฝเบงเบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปƒเบ”เป†, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบเปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปƒเบ”เบเปเปˆเบ•เบฒเบก - เบˆเบฒเบเบฅเบนเบเบ›เบฐเบชเบปเบกเบเบฑเบšเบฅเบฐเบšเบปเบšเบ‚เบญเบš.

Docker Compose

เป€เบ—เบเป‚เบ™เป‚เบฅเบเบต Docker Compose เบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบเบณเบ™เบปเบ”เบ„เปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบซเบผเบฒเบเบ–เบฑเบ‡. เป‚เบ„เบ‡เบเบฒเบ™ Docker Compose เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบˆเบธ Docker เบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบœเบนเป‰เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™.

เป€เบกเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Docker Compose, เป„เบŸเบฅเปŒ YAML เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเบšเปเบฅเบดเบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบฅเบฐเบˆเบฑเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ Docker Compose เปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบ เปเบฅเบฐเปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Docker เบซเบผเบฒเบเบžเบฒเบŠเบฐเบ™เบฐ.

Docker Compose: เป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบฝเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ Makefiles
เบชเบญเบ‡เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเป‚เบฎเบ”

GNU เป€เบฎเบฑเบ”

เป‚เบ›เบฅเปเบเบฅเบก make, เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบˆเบฒเบเบฅเบฐเบซเบฑเบ”เปเบซเบผเปˆเบ‡. เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบงเบปเป‰เบฒเป„เบ”เป‰ make เปƒเบŠเป‰เบเบฑเบšเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบ”เป†เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ•เบปเบ™เป€เบญเบ‡เบกเบฑเบเป€เบžเบทเปˆเบญเบซเบฑเบ™เบ›เปˆเบฝเบ™เบงเบฑเบ”เบชเบฐเบ”เบธเบ›เป‰เบญเบ™เป€เบ‚เบปเป‰เบฒเป€เบ›เบฑเบ™เบšเบฒเบ‡เบฎเบนเบšเปเบšเบšเบœเบปเบ™เบœเบฐเบฅเบดเบ”, เป€เบžเบทเปˆเบญเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบšเบฒเบ‡เบขเปˆเบฒเบ‡. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ„เปเบฒเบชเบฑเปˆเบ‡ docker-compose เบˆเบฐเบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เป€เบ›เบปเป‰เบฒเปเบฒเบเบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™ (เป€เบ›เบปเป‰เบฒเปเบฒเบเป‚เบ—เบฅเบฐเบชเบฑเบš).

เป€เบžเบทเปˆเบญเบšเบญเบเป‚เบ„เบ‡เบเบฒเบ™ make เบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบˆเบฒเบเบกเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป„เบŸเบฅเปŒ Makefile.

เปƒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ Makefile เบˆเบฐเบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡เบ›เบปเบเบเบฐเบ•เบด docker ะธ docker-compose, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบซเบผเบฒเบเบขเปˆเบฒเบ‡. เบ„เบท, เบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฐเบเบญเบšเบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต, เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบกเบฑเบ™, เบขเบธเบ”เบกเบฑเบ™, เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบซเบกเปˆ, เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบเบฑเบšเบžเบฒเบŠเบฐเบ™เบฐ, เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบšเบฑเบ™เบ—เบถเบเบšเบฑเบ™เบˆเบธ, เปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบญเบทเปˆเบ™เป†.

เบเปเบฅเบฐเบ™เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบปเปˆเบงเป„เบ›เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™ Docker

เบ‚เปเปƒเบซเป‰เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบกเบตเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ TimescaleDB (Postgres).
  • เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ Express.js.
  • Ping (เบžเบฝเบ‡เปเบ•เปˆเบšเบฑเบ™เบˆเบธ, เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบซเบเบฑเบ‡เบžเบดเป€เบชเบ”).

เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ™เบตเป‰เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™ 3 Docker containers เปเบฅเบฐเป„เบŸเบฅเปŒ docker-compose, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบšเบฑเบ™เบˆเบธเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เปเบ•เปˆเบฅเบฐเบ–เบฑเบ‡เบˆเบฐเบกเบตเบˆเบธเบ”เบชเปเบฒเบžเบฑเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบตเบ–เบฑเบ‡ timescale เบกเบฑเบ™เบˆเบฐเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเบ›เบฐเบกเบฒเบ™เปเบšเบšเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™. เบ„เบท, เบกเบฑเบ™เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš Shell Postgres.
  • เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเปเบฅเบฐเบชเบปเปˆเบ‡เบญเบญเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡.
  • เบเบฒเบ™เบชเป‰เบฒเบ‡ pg_dump เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบผเบทเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™.

เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ Express.js, expressjs, เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹:

  • เบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบชเบปเบ”เบˆเบฒเบเบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš.
  • เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบš shell เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™.

เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธ

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ containers เป‚เบ”เบเปƒเบŠเป‰ Docker Compose, เบกเบฑเบ™เป€เบ–เบดเบ‡เป€เบงเบฅเบฒเบ—เบตเปˆเบˆเบฐเบ•เบดเบ”เบ•เปเปˆเบชเบทเปˆเบชเบฒเบ™เบเบฑเบš containers เป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™. เบžเบฒเบเปƒเบ™เบฅเบฐเบšเบปเบš Docker Compose เบกเบตเบ„เปเบฒเบชเบฑเปˆเบ‡ docker-compose, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ -f, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป‚เบญเบ™เป„เบŸเบฅเปŒเป„เบ›เบซเบฒเบฅเบฐเบšเบปเบš docker-compose.yml.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเปเบฒเบเบฑเบ”เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบšเบฅเบฐเบšเบปเบšเบžเบฝเบ‡เปเบ•เปˆเบเบฑเบšเบšเบฑเบ™เบˆเบธเป€เบซเบผเบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปƒเบ™เป„เบŸเบฅเปŒ docker-compose.yml.

เบฅเบญเบ‡เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบเบฑเบš containers เบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเปเบ™เบงเปƒเบ”เป€เบกเบทเปˆเบญเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ 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, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบ™เบตเป‰เบฅเบปเบšเบฅเป‰เบฒเบ‡เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบˆเบทเปˆเบˆเปเบฒเบŠเบทเปˆเบšเบฑเบ™เบˆเบธ.

เบ—เบฑเบ‡เบชเบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เบšเปเปˆเบเบฒเบเบซเบผเบฒเบ. เปเบ•เปˆเบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ "wrapper" เปƒเบ™เบฎเบนเบšเปเบšเบš Makefile, เป€เบŠเบดเปˆเบ‡เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเปเบฅเบฐเบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡เบˆเบฐเป€เบญเบตเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบเบฒเบงเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ”เบฝเบงเบเบฑเบ™เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

make db-shell

เบกเบฑเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Makefile เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš containers เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบซเบผเบฒเบ!

เบ•เบปเบงเบขเปˆเบฒเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบ

เบญเบตเบ‡เปƒเบชเปˆเปเบœเบ™เบงเบฒเบ”เป‚เบ„เบ‡เบเบฒเบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ•เปเปˆเป„เบ›เบ™เบตเป‰ 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 เปเบฅเบฐเบžเบปเบงเบžเบฑเบ™เบเบฑเบš containers เบ—เบตเปˆเบกเบฑเบ™เบญเบฐเบ—เบดเบšเบฒเบ, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ•เปเปˆเป„เบ›เบ™เบตเป‰. 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= เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบเบฑเบšเบซเบ™เบถเปˆเบ‡ container.

เบซเบฅเบฑเบ‡เบˆเบฒเบ Makefile เบžเป‰เบญเบกโ€‹เปเบฅเป‰เบงโ€‹, เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบกเบฑเบ™โ€‹เป€เบŠเบฑเปˆเบ™โ€‹เบ™เบตเป‰โ€‹:

  • make help โ€” เบญเบญเบโ€‹เบšเบฑเบ™โ€‹เบŠเบตโ€‹เบฅเบฒเบโ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹ make.

Docker Compose: เป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบฝเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ Makefiles
เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆ

  • make build - เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบˆเบฒเบโ€‹ Dockerfile. เปƒเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบกเบตเบขเบนเปˆ timescale ะธ ping. เปเบ•เปˆเบฎเบนเบšเบžเบฒเบš api เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบเบฑเบšเบเปเบฒเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เบ™เบตเป‰.

Docker Compose: เป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบฝเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ Makefiles
เบเบฒเบ™เบชเป‰เบฒเบ‡ Docker container

  • make start โ€” เป€เบ›เบตเบ”โ€‹เบ•เบปเบงโ€‹เบšเบฑเบ™โ€‹เบˆเบธโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹. เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เบ•เบปเบงเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡ container, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบŠเบฑเปˆเบ™: 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 เบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบ›เบฐเบ•เบดเบชเปเบฒเบžเบฑเบ™เป„เบงเปเบฅเบฐเบ‡เปˆเบฒเบเบ”เบฒเบเบเบฑเบš containers เบˆเบฒเบเป„เบŸเบฅเปŒ docker-compose.yml. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบงเบปเป‰เบฒเบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เบดเบ”เบ•เปเปˆเบžเบปเบงเบžเบฑเบ™เบเบฑเบšเบ•เบปเบงเบšเบฑเบ™เบˆเบธเป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™ docker-compose.yml, เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบšเปเปˆเป„เบ”เป‰เบ–เบทเบเปเบŠเบเปเบŠเบ‡เป‚เบ”เบเบ–เบฑเบ‡เปเบฅเปˆเบ™เบญเบทเปˆเบ™เป†.
  • เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบ–เบทเบเบฅเบทเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เป„เบ”เป‰ make help เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบเปˆเบฝเบงเบเบฑเบšเบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เบตเปˆเบกเบตเบขเบนเปˆ.
  • เบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบˆเบทเปˆเบˆเปเบฒเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบเบฒเบงเบ‚เบญเบ‡ argument เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบšเบฑเบ™เบ—เบถเบเบซเบฅเป‰เบฒเบชเบธเบ”เบซเบผเบทเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฐเบšเบปเบš. เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบŠเบฑเปˆเบ™ docker-compose -f docker-compose.yml exec timescale psql -Upostgres เบเบฒเบเป€เบ›เบฑเบ™ make db-shell.
  • เป€เบญเบเบฐเบชเบฒเบ™ Makefile เป€เบˆเบปเป‰เบฒเบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ•เบปเบงเป€เบ‚เบปเป‰เบฒเบเบฑเบšเบกเบฑเบ™เป„เบ”เป‰เป€เบกเบทเปˆเบญเป‚เบ„เบ‡เบเบฒเบ™เป€เบ•เบตเบšเปƒเบซเบเปˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบซเบผเบทเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบญเบทเปˆเบ™เป†.
  • เบ–เป‰เบฒเบ—เบตเบกเบ‡เบฒเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบŠเป‰เบ”เบฝเบงเบเบฑเบ™ Makefile, เบ™เบตเป‰เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบฎเปˆเบงเบกเบกเบทเปเบฅเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.

PS เปƒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ เบ•เบฐเบซเบผเบฒเบ” เบกเบตเบฎเบนเบšเบžเบฒเบš Docker, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบ™เบซเบ™เบถเปˆเบ‡เบ„เบฅเบดเบ. เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบžเบฒโ€‹เบŠเบฐโ€‹เบ™เบฐโ€‹เบ—เบตเปˆโ€‹ VPS. เบฅเบนเบเบ„เป‰เบฒเปƒเบซเบกเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เปƒเบซเป‰ 3 เบกเบทเป‰เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบŸเบฃเบต.

เบ—เปˆเบฒเบ™เบœเบนเป‰เบญเปˆเบฒเบ™เบ—เบตเปˆเบฎเบฑเบเปเบžเบ‡! เป€เบˆเบปเป‰เบฒเป€เบฎเบฑเบ”เปƒเบซเป‰ Docker Compose เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป„เบ”เป‰เปเบ™เบงเปƒเบ”?

Docker Compose: เป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบฝเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ Makefiles

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™