เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช: เชฎเซ‡เช•เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚

เชฆเชฐ เชฅเซ‹เชกเชพ เชตเชฐเซเชทเซ‹เชฎเชพเช‚, เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชกเซ‡เชตเชฒเชชเชฎเซ‡เชจเซเชŸ เชˆเชจเซเชกเชธเซเชŸเซเชฐเซ€เชฎเชพเช‚ เชชเซ‡เชฐเชพเชกเชพเชˆเชฎ เชถเชฟเชซเซเชŸ เชฅเชพเชฏ เช›เซ‡. เช†เชฎเชพเช‚เชจเซ€ เชเช• เช˜เชŸเชจเชพเชจเซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธเชจเซ€ เชตเชฟเชญเชพเชตเชจเชพเชฎเชพเช‚ เชตเชงเชคเซ€ เชœเชคเซ€ เชฐเชธ เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เซ€ เชถเช•เชพเชฏ เช›เซ‡. เชœเซ‹เช•เซ‡ เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เช เชธเซŒเชฅเซ€ เชจเชตเซ€ เชคเช•เชจเซ€เช• เชจเชฅเซ€, เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชœ เชคเซ‡เชจเซ€ เชฒเซ‹เช•เชชเซเชฐเชฟเชฏเชคเชพ เชถเชพเชฌเซเชฆเชฟเช• เชฐเซ€เชคเซ‡ เช†เชธเชฎเชพเชจเซ‡ เชชเชนเซ‹เช‚เชšเซ€ เช›เซ‡.

เชฎเซ‹เชŸเซ€ เชฎเซ‹เชจเซ‹เชฒเชฟเชฅเชฟเช• เชธเซ‡เชตเชพเช“ เชนเชตเซ‡ เชธเซเชตเชคเช‚เชคเซเชฐ, เชธเซเชตเชพเชฏเชคเซเชค เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธ เชฆเซเชตเชพเชฐเชพ เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซ€ เช›เซ‡. เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชจเซ‡ เชเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชคเชฐเซ€เช•เซ‡ เชตเชฟเชšเชพเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เชœเซ‡ เชเช• เชœ เช…เชจเซ‡ เช–เซ‚เชฌ เชœ เชšเซ‹เช•เซเช•เชธ เชนเซ‡เชคเซเชจเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเซ‡ เชฐเชฟเชฒเซ‡เชถเชจเชฒ เชกเซ€เชฌเซ€เชเชฎเชเชธ, เชเช•เซเชธเชชเซเชฐเซ‡เชธ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ, เชธเซ‹เชฒเชฐ เชธเซ‡เชตเชพ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช: เชฎเซ‡เช•เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚

เช† เชฆเชฟเชตเชธเซ‹เชฎเชพเช‚, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เชจเชตเซ€ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชธเชฟเชธเซเชŸเชฎ เชตเชฟเช•เชธเชพเชตเชตเชพเชจเซ€ เช•เชฒเซเชชเชจเชพ เช•เชฐเชตเซ€ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡. เช…เชจเซ‡ เช† เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ, เชฌเชฆเชฒเชพเชฎเชพเช‚, เช…เชฎเชจเซ‡ เชกเซ‹เช•เชฐ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡.

Docker

เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ Docker, เชฎเชพเช‡เช•เซเชฐเซ‹เชธเชฐเซเชตเชฟเชธเชฟเชธเชจเชพ เชตเชฟเช•เชพเชธ เช…เชจเซ‡ เชœเชฎเชพเชตเชŸเชฎเชพเช‚, เชฒเช—เชญเช— เชเช• เช‰เชฆเซเชฏเซ‹เช— เชงเซ‹เชฐเชฃ เชฌเชจเซ€ เช—เชฏเซเช‚ เช›เซ‡. เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชตเซ‡เชฌเชธเชพเชˆเชŸ เชชเชฐ เชคเชฎเซ‡ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เชกเซ‹เช•เชฐ เชเช•เชฎเชพเชคเซเชฐ เชธเซเชตเชคเช‚เชคเซเชฐ เช•เชจเซเชŸเซ‡เชจเชฐเชพเชˆเชเซ‡เชถเชจ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เช›เซ‡ เชœเซ‡ เชธเช‚เชธเซเชฅเชพเช“เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชตเชฟเชจเชพ เชชเซเชฐเชฏเชพเชธเซ‡ เชฌเชจเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡, เชคเซ‡เชฎเชœ เชคเซ‡เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชตเชฟเชคเชฐเชฟเชค เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ - เชนเชพเช‡เชฌเซเชฐเชฟเชก เช•เซเชฒเชพเช‰เชกเซเชธเชฅเซ€ เชเชœ เชธเชฟเชธเซเชŸเชฎเซเชธ เชธเซเชงเซ€.

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช

เชŸเซ‡เช•เชจเซ‹เชฒเซ‹เชœเซ€ เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช เชฎเชฒเซเชŸเชฟ-เช•เชจเซเชŸเซ‡เชจเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡. เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เชจเชฟเชฐเซเชฎเชพเชคเชพเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชค เชœเซ‡เชŸเชฒเชพ เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชกเซ‹เช•เชฐ เช•เชฎเซเชชเซ‹เช เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, YAML เชซเชพเช‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเซ‡เชตเชพเช“เชจเซ‡ เช—เซ‹เช เชตเชตเชพ เช…เชจเซ‡ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชคเซ‡เชฎเชจเซ€ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡. เชคเซ‡เชฅเซ€ เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช เช เชฎเชฒเซเชŸเซ€-เช•เชจเซเชŸเซ‡เชจเชฐ เชกเซ‹เช•เชฐ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡.

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช: เชฎเซ‡เช•เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚
เชนเซ‹เชธเซเชŸ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชšเชพเชฒเชคเชพ เชฌเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ

เชœเซ€.เชเชจ.เชฏเซ. เชฎเซ‡เช•

เช•เชพเชฐเซเชฏเช•เซเชฐเชฎ make, เช†เชตเชถเซเชฏเช•เชชเชฃเซ‡ เชธเซเชฐเซ‹เชค เช•เซ‹เชกเชฎเชพเช‚เชฅเซ€ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธ เช…เชจเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชจเชพ เชจเชฟเชฐเซเชฎเชพเชฃเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชธเชพเชงเชจ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช†เชชเชฃเซ‡ เชคเซ‡ เช•เชนเซ€ เชถเช•เซ€เช make เช•เซ‹เชˆเชชเชฃ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชฒเชพเช—เซ เชชเชกเซ‡ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช•เซ‡เชŸเชฒเซ€เช• เช‡เชจเชชเซเชŸ เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‡ เช…เชฎเซเช• เช†เช‰เชŸเชชเซเชŸ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚, เช…เชฎเซเช• เชงเซเชฏเซ‡เชฏเชฎเชพเช‚ เชชเชฐเชฟเชตเชฐเซเชคเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชจเชธเซเชตเซ€ เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเชตเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช†เชฆเซ‡เชถเซ‹ docker-compose เช…เชฎเซ‚เชฐเซเชค เชฒเช•เซเชทเซเชฏเซ‹เชฎเชพเช‚ เชชเชฐเชฟเชตเชฐเซเชคเชฟเชค เชฅเชถเซ‡ (เชซเซ‹เชจ เชฒเช•เซเชทเซเชฏเซ‹).

เช•เชพเชฐเซเชฏเช•เซเชฐเชฎ เชœเชฃเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ make เช…เชฎเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชถเซเช‚ เชœเซ‹เชˆเช เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡, เช…เชฎเชจเซ‡ เชเช• เชซเชพเช‡เชฒเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ Makefile.

เช…เชฎเชพเชฐเชพเชฎเชพเช‚ Makefile เชจเชฟเชฏเชฎเชฟเชค เช†เชฆเซ‡เชถเซ‹ เชธเชฎเชพเชตเชถเซ‡ docker ะธ docker-compose, เชœเซ‡ เช˜เชฃเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชนเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡. เชœเซ‡เชฎ เช•เซ‡, เช…เชฎเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡, เชคเซ‡เชจเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡, เชคเซ‡เชจเซ‡ เชฌเช‚เชง เช•เชฐเชตเชพ เชตเชฟเชถเซ‡, เชคเซ‡เชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡, เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเชพ เชฒเซ‰เช—เชฟเชจเชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชตเชฟเชถเซ‡, เช•เชจเซเชŸเซ‡เชจเชฐ เชฒเซ‰เช—เซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เช…เชจเซ‡ เช…เชจเซเชฏ เชธเชฎเชพเชจ เชธเชฎเชธเซเชฏเชพเช“ เชนเชฒ เช•เชฐเชตเชพ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช.

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช เชฎเชพเชŸเซ‡ เชฒเชพเช•เซเชทเชฃเชฟเช• เช‰เชชเชฏเซ‹เช—เชจเชพ เช•เซ‡เชธเซ‹

เชšเชพเชฒเซ‹ เชเช• เชจเชฟเชฏเชฎเชฟเชค เชตเซ‡เชฌ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เช•เชฒเซเชชเชจเชพ เช•เชฐเซ€เช เชœเซ‡เชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเชพ เช˜เชŸเช•เซ‹ เชนเซ‹เชฏ:

  • เชŸเชพเช‡เชฎเชธเซเช•เซ‡เชฒเชกเซ€เชฌเซ€ เชกเซ‡เชŸเชพเชฌเซ‡เช (เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ).
  • Express.js เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ.
  • เชชเชฟเช‚เช— (เชฎเชพเชคเซเชฐ เชเช• เช•เชจเซเชŸเซ‡เชจเชฐ, เช•เช‚เชˆ เช–เชพเชธ เช•เชฐเชคเซเช‚ เชจเชฅเซ€).

เช† เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ 3 เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐ เช…เชจเซ‡ เชเช• เชซเชพเช‡เชฒเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ docker-compose, เชœเซ‡เชฎเชพเช‚ เช† เช•เชจเซเชŸเซ‡เชจเชฐเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชธเซ‚เชšเชจเชพเช“ เช›เซ‡. เชฆเชฐเซ‡เช• เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เช…เชฒเช— เช…เชฒเช— เชŸเชšเชชเซ‹เช‡เชจเซเชŸ เชนเชถเซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฅเซ‡ timescale เชคเซ‡เช“ เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชฐเซ€เชคเซ‡ เชฒเช—เชญเช— เชคเซ‡ เชœ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชถเช•เซเชฏ เชฌเชจเชถเซ‡. เชเชŸเชฒเซ‡ เช•เซ‡, เชคเซ‡ เชคเชฎเชจเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เช•เซเชฐเชฟเชฏเชพเช“ เช•เชฐเชตเชพ เชฆเซ‡ เช›เซ‡:

  • เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ เชถเซ‡เชฒเชฎเชพเช‚ เชฒเซ‰เช— เช‡เชจ เช•เชฐเซ‹.
  • เช•เซ‹เชทเซเชŸเช•เซ‹เชจเซ€ เช†เชฏเชพเชค เช…เชจเซ‡ เชจเชฟเช•เชพเชธ.
  • เชฌเชจเชพเชตเชŸ pg_dump เช•เซ‹เชทเซเชŸเช•เซ‹ เช…เชฅเชตเชพ เชกเซ‡เชŸเชพเชฌเซ‡เช.

Express.js เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เชจเซเชŸเซ‡เชจเชฐ, expressjs, เชจเซ€เชšเซ‡เชจเซ€ เช•เซเชทเชฎเชคเชพเช“ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡:

  • เชธเชฟเชธเซเชŸเชฎ เชฒเซ‹เช—เชฎเชพเช‚เชฅเซ€ เชคเชพเชœเซ‹ เชกเซ‡เชŸเชพ เชชเซ‚เชฐเซ‹ เชชเชพเชกเซ‡ เช›เซ‡.
  • เช…เชฎเซเช• เช†เชฆเซ‡เชถเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชถเซ‡เชฒเชฎเชพเช‚ เชฒเซ‰เช—เชฟเชจ เช•เชฐเซ‹.

เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ

เชเช•เชตเชพเชฐ เช…เชฎเซ‡ เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชตเชšเซเชšเซ‡ เชธเช‚เชšเชพเชฐ เชธเซ‡เชŸ เช•เชฐเซ€ เชฒเซ€เชงเชพ เชชเช›เซ€, เชคเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฅเซ‡ เชตเชพเชคเชšเซ€เชค เช•เชฐเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡. เชกเซ‹เช•เชฐ เช•เชฎเซเชชเซ‹เช เชธเชฟเชธเซเชŸเชฎเชจเซ€ เช…เช‚เชฆเชฐ เชเช• เช†เชฆเซ‡เชถ เช›เซ‡ 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

เชกเซ‹เช•เชฐ เช•เชฎเซเชชเซ‹เช เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซเช‚ เชธเช‚เชšเชพเชฒเชจ เช•เชฐเชตเชพ เช…เชจเซ‡ เชคเซ‡ เชตเชฐเซเชฃเชตเซ‡เชฒ เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฅเซ‡ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ€เชถเซเช‚ 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 เช…เชฎเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช. เช† เช†เชฆเซ‡เชถเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เซเชฏเชพ เชชเช›เซ€ เชฌเชฐเชพเชฌเชฐ เช† เชœ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช: เชฎเซ‡เช•เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚
เชกเซ‹เช•เชฐ เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเชจเชพเชตเชตเซเช‚

  • make start - เชฌเชงเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เชฒเซ‹เช‚เชš เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช. เชฎเชพเชคเซเชฐ เชเช• เช•เชจเซเชŸเซ‡เชจเชฐ เชฒเซ‹เช‚เชš เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เชœเซ‡เชตเชพ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ make start c=timescale.

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช: เชฎเซ‡เช•เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚
เชŸเชพเช‡เชฎเชธเซเช•เซ‡เชฒ เช•เชจเซเชŸเซ‡เชจเชฐ เชšเชฒเชพเชตเชตเซเช‚

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช: เชฎเซ‡เช•เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚
เชชเชฟเช‚เช— เช•เชจเซเชŸเซ‡เชจเชฐ เชšเชฒเชพเชตเชตเซเช‚

  • make login-timescale โ€” เช•เชจเซเชŸเซ‡เชจเชฐเชจเชพ เชฌเซ‡เชถ เชธเชคเซเชฐเชฎเชพเช‚ เชฒเซ‹เช—เชฟเชจ เช•เชฐเซ‹ timescale.

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช: เชฎเซ‡เช•เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚
เชŸเชพเช‡เชฎเชธเซเช•เซ‡เชฒ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ เชฌเซ‡เชถ เชšเชฒเชพเชตเชตเซเช‚

  • make db-shell - เชฎเชพเชŸเซ‡ เชชเซเชฐเชตเซ‡เชถ psql เชเช• เช•เชจเซเชŸเซ‡เชจเชฐ เชฎเชพเช‚ timescale เชกเซ‡เชŸเชพเชฌเซ‡เช เชธเชพเชฎเซ‡ SQL เช•เซเชตเซ‡เชฐเซ€เช เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡.

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช: เชฎเซ‡เช•เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚
เชŸเชพเช‡เชฎเชธเซเช•เซ‡เชฒเซเชกเชฌเซ€ เช•เชจเซเชŸเซ‡เชจเชฐเชฎเชพเช‚ psql เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

  • make stop - เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเซ‹เช•เชตเชพ.

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช: เชฎเซ‡เช•เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚
เชŸเชพเช‡เชฎเชธเซเช•เซ‡เชฒ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเซ‹เช•เซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

  • make down - เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเซ‹เช•เชตเซเช‚ เช…เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเซเช‚. เชšเซ‹เช•เซเช•เชธ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเซ‡ เช‡เชšเซเช›เชฟเชค เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชคเชพ เช† เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชฆเชพเช–เซเชฒเชพ เชคเชฐเซ€เช•เซ‡ - make down c=timescale เช…เชฅเชตเชพ make down c=api.

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช: เชฎเซ‡เช•เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚
เชฌเชงเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เชฐเซ‹เช•เซ€เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเซเช‚

เชชเชฐเชฟเชฃเชพเชฎเซ‹

เชคเซ‡เชฎ เช›เชคเชพเช‚ เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช เช…เชฎเชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เชฆเซ‡เชถเซ‹เชจเซ‹ เชธเชฎเซƒเชฆเซเชง เชธเชฎเซ‚เชน เช†เชชเซ‡ เช›เซ‡, เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เช† เช†เชฆเซ‡เชถเซ‹ เชฒเชพเช‚เชฌเชพ เช…เชจเซ‡ เชฏเชพเชฆ เชฐเชพเช–เชตเชพ เชฎเซเชถเซเช•เซ‡เชฒ เชฌเชจเซ€ เชถเช•เซ‡ เช›เซ‡.

เช‰เชชเชฏเซ‹เช—เชจเซ€ เชชเชฆเซเชงเชคเชฟ 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 เช…เชฎเชพเชฐเชพเชฎเชพเช‚ เชฌเชœเชพเชฐ เชเช• เช›เชฌเซ€ เช›เซ‡ Docker, เชœเซ‡ เชเช• เช•เซเชฒเชฟเช•เชฎเชพเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชชเชฐ เชคเชฎเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชคเชชเชพเชธเซ€ เชถเช•เซ‹ เช›เซ‹ VPS. เชคเชฎเชพเชฎ เชจเชตเชพ เช—เซเชฐเชพเชนเช•เซ‹เชจเซ‡ 3 เชฆเชฟเชตเชธเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เชฎเชซเชค เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชชเซเชฐเชฟเชฏ เชตเชพเชšเช•เซ‹! เชคเชฎเซ‡ เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชถเซ‹?

เชกเซ‹เช•เชฐ เช•เช‚เชชเซ‹เช: เชฎเซ‡เช•เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเซเช‚

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹