เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš Docker เปƒเบ™ werf เป‚เบ”เบเปƒเบŠเป‰ Dockerfile เบ›เบปเบเบเบฐเบ•เบด

เบกเบฒโ€‹เบŠเป‰เบฒโ€‹เบ”เบตเบโ€‹เบงเปˆเบฒโ€‹เบšเปเปˆโ€‹เบกเบฒ. เบซเบผเบทเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบเบทเบญเบšเบˆเบฐเป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เป‚เบ”เบเบเบฒเบ™เบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Dockerfiles เบ›เบปเบเบเบฐเบ•เบดเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš Docker เปƒเบ™ werf เป‚เบ”เบเปƒเบŠเป‰ Dockerfile เบ›เบปเบเบเบฐเบ•เบด

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบš werf - เบœเบปเบ™โ€‹เบ›เบฐโ€‹เป‚เบซเบเบ” GitOps เบ—เบตเปˆโ€‹เบ›เบฐโ€‹เบชเบปเบกโ€‹เบ›เบฐโ€‹เบชเบฒเบ™โ€‹เบเบฑเบšโ€‹เบฅเบฐโ€‹เบšเบปเบš CI / CD เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เปเบฅเบฐโ€‹เบชเบฐโ€‹เบซเบ™เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹เบ‚เบญเบ‡โ€‹เบงเบปเบ‡โ€‹เบˆเบญเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹, เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹:

  • เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เปเบฅเบฐโ€‹เป€เบœเบตเบโ€‹เปเบœเปˆโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹,
  • เบ™เบณเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™ Kubernetes,
  • เบฅเบถเบšเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰เป‚เบ”เบเปƒเบŠเป‰เบ™เบฐเป‚เบเบšเบฒเบเบžเบดเป€เบชเบ”.


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

เบ„เบงเบฒเบกโ€‹เป€เบ›เบฑเบ™โ€‹เบกเบฒโ€‹: เบ•เบปเบงโ€‹เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹เป€เบญเบ‡โ€‹

เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเบ•เบปเบงเป€เบเบฑเบšเบฎเบนเบšเบžเบฒเบšเปƒเบ™ werf: Dockerfile เบ›เบปเบเบเบฐเบ•เบดเบšเปเปˆเบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบšเบดเปˆเบ‡เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ, เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบชเบฐเบšเบฑเบšเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ werf (เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฑเบ‡. เป€เบ›เบฑเบ™เบ—เบตเปˆเบฎเบนเป‰เบˆเบฑเบเป€เบ›เบฑเบ™ dapp).

เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเบžเบฒเบš Docker, เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบงเปˆเบฒ Dockerfile เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบชเปเบฒเบฅเบฑเบšเบšเบฒเบ‡เบงเบฝเบเบ‡เบฒเบ™เบชเบฐเป€เบžเบฒเบฐ:

  1. เบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเป„เบŠเบ•เปŒเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ›เบปเบเบเบฐเบ•เบดเบ•เบฒเบกเป‚เบ„เบ‡เบเบฒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:
    • เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบšโ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹เบ—เบปเปˆเบงโ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹,
    • เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบŠเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบซเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบธเบ”โ€‹เบเบฒเบ™โ€‹เป€เบžเบดเปˆเบ‡โ€‹เบžเบฒโ€‹เบญเบฒโ€‹เป„เบชโ€‹เบ‚เบญเบ‡โ€‹เบ„เปเบฒโ€‹เบฎเป‰เบญเบ‡โ€‹เบชเบฐโ€‹เบซเบกเบฑเบโ€‹,
    • เป€เบเบฑเบšโ€‹เบเปเบฒโ€‹เบŠเบฑเบšโ€‹เบชเบดเบ™โ€‹,
    • เปเบฅเบฐเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”, เบ›เบฑเบšเบ›เบธเบ‡เบฅเบฐเบซเบฑเบ”เปƒเบ™เบฎเบนเบšเบžเบฒเบšเบขเปˆเบฒเบ‡เป„เบงเบงเบฒเปเบฅเบฐเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš.
  2. เป€เบกเบทเปˆเบญเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบŸเบฅเปŒเป‚เบ„เบ‡เบเบฒเบ™, เบœเบนเป‰เบชเป‰เบฒเบ‡เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบŠเบฑเป‰เบ™เปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เป„เบงเบงเบฒเป‚เบ”เบเบเบฒเบ™เปƒเบŠเป‰ patch เบเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡.
  3. เบ–เป‰เบฒเป„เบŸเบฅเปŒเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเป‰เบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™.

เบกเบทเป‰เบ™เบตเป‰เบ™เบฑเบเบชเบฐเบชเบปเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบญเบทเปˆเบ™เป†เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เปเบ•เปˆเบชเบดเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบ›เบฒเบ”เบ–เบฐเบซเบ™เบฒเปเบฅเบฐเบ„เบงเบฒเบกเบขเบฒเบเป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™.

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ„เบดเบ”เบชเบญเบ‡เป€เบ—เบทเปˆเบญ, เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบเบญเบšเบญเบฒเบงเบธเบ”เบ•เบปเบงเป€เบญเบ‡เบ”เป‰เบงเบเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ (เป€เบšเบดเปˆเบ‡เบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰) เปเบฅเบฐเบ•เบตเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ” DSL เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡! เบญเบตเบ‡เบ•เบฒเบกเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡, เบกเบฑเบ™เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ›เบฐเบเบญเบšเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปˆเบฒเบ‡เป†เปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เป„เบŸเบฅเปŒ. เปเบฅเบฐเบ›เบฐเบเบญเบšเบกเบฑเบ™ เบœเบนเป‰เป€เบเบฑเบšเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบซเบฑเบ™ DSL เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบชเบธเบ”เบ—เป‰เบฒเบ - เบฎเบนเบšเบžเบฒเบšเบ›เบฐเบเบญเบš. เปƒเบ™เบ•เบญเบ™เบ—เปเบฒเบญเบดเบ” DSL เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ Ruby, เปเบ•เปˆเป€เบ›เบฑเบ™ เบเบฒเบ™โ€‹เบซเบฑเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เป„เบ› Golangโ€‹ โ€” เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ•เบปเบงเป€เบเบฑเบšเบเบณเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเปˆเบกเบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™เป„เบŸเบฅเปŒ YAML.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš Docker เปƒเบ™ werf เป‚เบ”เบเปƒเบŠเป‰ Dockerfile เบ›เบปเบเบเบฐเบ•เบด
เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบเบปเปˆเบฒเบชเปเบฒเบฅเบฑเบš dapp เปƒเบ™ Ruby

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš Docker เปƒเบ™ werf เป‚เบ”เบเปƒเบŠเป‰ Dockerfile เบ›เบปเบเบเบฐเบ•เบด
เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ›เบฐเบˆเบธเบšเบฑเบ™เบชเปเบฒเบฅเบฑเบš werf เปƒเบ™ YAML

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

NB: เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ•เบปเบงเป€เบเบฑเบšเบฅเบงเบšเบฅเบงเบกเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš config เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡ (เปƒเบ™ YAML) เปเบฅเบฐเป€เบญเบตเป‰เบ™เบงเปˆเบฒ Stapel collector, เป„เบ”เป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบฅเป‰เบงเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบžเปเบชเบปเบกเบ„เบงเบ™. เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบชเบปเบกเบ„เบงเบ™เป„เบ”เป‰เบฎเบฑเบšเบšเบปเบ”เบ„เบงเบฒเบกเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เปเบฅเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™ เป€เบญเบเบฐเบชเบฒเบ™.

เบ„เบงเบฒเบกเบฎเบฑเบšเบฎเบนเป‰เบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒ

เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบฎเบฑเบšเบฎเบนเป‰, เปเบฅเบฐเบšเปเปˆเบ—เบฑเบ™เบ—เบต, เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฎเบฑเบ”เบœเบดเบ”เบžเบฒเบ”เบซเบ™เบถเปˆเบ‡: เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ” เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบšเบœเปˆเบฒเบ™ Dockerfile เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ เปเบฅเบฐเบฅเบงเบกเบžเบงเบเบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบšเบšเบชเบดเป‰เบ™เบชเบธเบ”เป€เบ–เบดเบ‡เบˆเบธเบ”เบ”เบฝเบงเบเบฑเบ™ (เป€เบŠเบฑเปˆเบ™: เป€เบเบฑเบšเบเปเบฒเบฎเบนเบšเบžเบฒเบš, เบ™เปเบฒเปƒเบŠเป‰เปเบฅเบฐเป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เบžเบงเบเบกเบฑเบ™). เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปเบ™เบงเปƒเบ”เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ Kubernetes เปเบฅเบฐเบšเปเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Dockerfile, i.e. เบงเบดเบ—เบตเบเบฒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบฎเบนเบšเบžเบฒเบšเบชเปเบฒเบฅเบฑเบšเป‚เบ„เบ‡เบเบฒเบ™เบชเปˆเบงเบ™เปƒเบซเบเปˆ?..

เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบ•เบญเบšเบ„เปเบฒเบ–เบฒเบกเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบ™เบตเบเบฒเบ™เปเบเป‰เป„เบ‚. เบˆเบฐเป€เบ›เบฑเบ™เปเบ™เบงเปƒเบ”เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบกเบต Dockerfile (เบซเบผเบทเบŠเบธเบ”เบ‚เบญเบ‡ Dockerfiles) เปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰ werf?

NB: เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เป€เบˆเบปเป‰เบฒเบˆเบถเปˆเบ‡เบขเบฒเบเปƒเบŠเป‰ werf? เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบงเบปเบ‡เบˆเบญเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เบ—เปเบฒเบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เบฎเบนเบšเบžเบฒเบš;
  • เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ„เบธเป‰เบกโ€‹เบ„เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ‚เบญเบ‡โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ”เบฝเบงโ€‹เบˆเบฒเบ config เบ”เบฝเบงโ€‹;
  • เบ›เบฑเบšเบ›เบธเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบชเบณเบฅเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš Helm.

เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ„เบปเบšเบ–เป‰เบงเบ™เบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เบ—เบตเปˆ เบซเบ™เป‰เบฒเป‚เบ„เบ‡เบเบฒเบ™.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เบ‚เบฝเบ™ Dockerfile เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบงเบปเป‰เบฒเบขเปˆเบฒเบ‡เบกเบตเบ„เบงเบฒเบกเบชเบธเบ: "เปƒเบซเป‰ werf เบชเป‰เบฒเบ‡ Dockerfiles เบ‚เบญเบ‡เบ—เปˆเบฒเบ™!"

เบงเบดเบ—เบตเปƒเบŠเป‰?

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบ‚เบญเบ‡เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ™เบตเป‰เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบ werf v1.0.3-beta.1. เบซเบผเบฑเบเบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ: เบœเบนเป‰เปƒเบŠเป‰เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒ Dockerfile เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเปƒเบ™ werf config, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡. werf build... เปเบฅเบฐเบ™เบฑเป‰เบ™เปเบกเปˆเบ™ - werf เบˆเบฐเบฅเบงเบšเบฅเบงเบกเบฎเบนเบšเบžเบฒเบš. เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™.

เบ‚เปเปƒเบซเป‰เบ›เบฐเบเบฒเบ”เบญเบฑเบ™เบ•เปเปˆเป„เบ› Dockerfile เปƒเบ™โ€‹เบฎเบฒเบโ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹:

FROM ubuntu:18.04
RUN echo Building ...

เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ›เบฐเบเบฒเบ” werf.yamlเป€เบŠเบดเปˆเบ‡เปƒเบŠเป‰เบญเบฑเบ™เบ™เบตเป‰ Dockerfile:

configVersion: 1
project: dockerfile-example
---
image: ~
dockerfile: ./Dockerfile

เบ—เบฑเบ‡เปเบปเบ”! เบŠเป‰เบฒเบ เปเบฅเปˆเบ™ werf build:

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบฎเบนเบšเบžเบฒเบš Docker เปƒเบ™ werf เป‚เบ”เบเปƒเบŠเป‰ Dockerfile เบ›เบปเบเบเบฐเบ•เบด

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบเบฒเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰ werf.yaml เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบซเบผเบฒเบเบฎเบนเบšเบˆเบฒเบ Dockerfiles เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™:

configVersion: 1
project: dockerfile-example
---
image: backend
dockerfile: ./dockerfiles/Dockerfile-backend
---
image: frontend
dockerfile: ./dockerfiles/Dockerfile-frontend

เบชเบธเบ”เบ—เป‰เบฒเบ, เบกเบฑเบ™เบเบฑเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ–เปˆเบฒเบเบ—เบญเบ”เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เป€เบŠเบฑเปˆเบ™: --build-arg ะธ --add-host - เบœเปˆเบฒเบ™ config werf. เบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบ„เบปเบšเบ–เป‰เบงเบ™เบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฎเบนเบšเบžเบฒเบš Dockerfile เปเบกเปˆเบ™เบกเบตเบขเบนเปˆ เปœเป‰เบฒเป€เบญเบเบฐเบชเบฒเบ™.

เบกเบฑเบ™เบšเปเปˆเป„เบ”เป‰เปเบ™เบงเปƒเบ”เป€เบฎเบฑเบ”เบงเบฝเบ?

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

  1. เปเบ•เปˆเบฅเบฐเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เบˆเบฒเบ Dockerfile เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ dockerfile (เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบขเบนเปˆเปƒเบ™ werf เบ—เบตเปˆเบ™เบตเป‰).
  2. เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบต dockerfile werf เบ„เบดเบ”เป„เบฅเปˆเบฅเบฒเบเป€เบŠเบฑเบ™เบ—เบตเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ™เบทเป‰เบญเปƒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Dockerfile. เป€เบกเบทเปˆเบญเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Dockerfile เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡ dockerfile เปเบฅเบฐ werf เป€เบฅเบตเปˆเบกเบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ™เบตเป‰เบ„เบทเบ™เปƒเปเปˆเบ”เป‰เบงเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ Dockerfile เปƒเปเปˆ. เบ–เป‰เบฒเบฅเบฒเบเป€เบŠเบฑเบ™เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ werf เป€เบญเบปเบฒเบฎเบนเบšเบžเบฒเบšเบˆเบฒเบ cache (เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰เบฅเบฒเบเป€เบŠเบฑเบ™เปƒเบ™ werf เป„เบ”เป‰เบ–เบทเบเบญเบฐเบ—เบดเบšเบฒเบเป„เบงเป‰เปƒเบ™ เบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบ™เบตเป‰).
  3. เบ•เปเปˆเป„เบ›, เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเป€เบœเบตเบเปเบœเปˆเบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡ werf publish (เบซเบผเบท werf build-and-publish) เปเบฅเบฐเปƒเบŠเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเบ™เบณเปƒเบŠเป‰เบเบฑเบš Kubernetes. เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเป€เบœเบตเบเปเบœเปˆเปƒเบ™ Docker Registry เบˆเบฐเบ–เบทเบเบญเบฐเบ™เบฒเป„เบกเป‚เบ”เบเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เปเบฒเบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ” werf เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, i.e. เบฎเบนเบšเบžเบฒเบšเป€เบเบปเปˆเบฒ (เป€เบเบปเปˆเบฒเบเบงเปˆเบฒ N เบกเบทเป‰), เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบชเบฒเบ‚เบฒ Git เบ—เบตเปˆเบšเปเปˆเบกเบตเบขเบนเปˆ, เปเบฅเบฐเบ™เบฐเป‚เบเบšเบฒเบเบญเบทเปˆเบ™เป†เบˆเบฐเบ–เบทเบเป€เบฎเบฑเบ”เบ„เบงเบฒเบกเบชเบฐเบญเบฒเบ”เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”.

เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบˆเบธเบ”เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบžเบปเบšเป„เบ”เป‰เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™:

เบซเบกเบฒเบเป€เบซเบ”เปเบฅเบฐเบ‚เปเป‰เบ„เบงเบ™เบฅเบฐเบงเบฑเบ‡

1. URL เบžเบฒเบเบ™เบญเบเบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบšเปƒเบ™ ADD

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

2. เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบก .git เปƒเบชเปˆเบฎเบนเบšเบžเบฒเบšเป„เบ”เป‰

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบง, เบเบฒเบ™เป€เบžเบตเปˆเบกเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต .git เปƒเบ™เบฎเบนเบšเบžเบฒเบš - เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบ”เบตเบ—เบตเปˆเป‚เบซเบ”เบฎเป‰เบฒเบเปเบฅเบฐเบ™เบตเป‰เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™:

  1. เบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒ .git เบเบฑเบ‡เบ„เบปเบ‡เบขเบนเปˆเปƒเบ™เบฎเบนเบšเบชเบธเบ”เบ—เป‰เบฒเบ, เบ™เบตเป‰เบฅเบฐเป€เบกเบตเบ”เบซเบผเบฑเบเบเบฒเบ™ 12 เบ›เบฑเบ”เป„เบˆ app: เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบฎเบนเบšเบžเบฒเบšเบชเบธเบ”เบ—เป‰เบฒเบเบ•เป‰เบญเบ‡เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ”เบฝเบง, เบกเบฑเบ™เบšเปเปˆเบ„เบงเบ™เป€เบฎเบฑเบ” git checkout เบ„เปเบฒโ€‹เบซเบกเบฑเป‰เบ™โ€‹เบชเบฑเบ™โ€‹เบเบฒโ€‹เป‚เบ”เบโ€‹เบ•เบปเบ™โ€‹เป€เบญเบ‡โ€‹.
  2. .git เป€เบžเบตเปˆเบกเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบš (เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบชเบฒเบกเบฒเบ”เบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเป‰เบญเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเป„เบŸเบฅเปŒเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเปƒเบชเปˆเบกเบฑเบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ–เบทเบเบฅเบถเบš). เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบชเบฐเป€เบžเบฒเบฐเปƒเบ”เบซเบ™เบถเปˆเบ‡เบˆเบฐเบšเปเปˆเบ‚เบถเป‰เบ™เบเบฑเบšเบ›เบฐเบซเบงเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เปƒเบ™ Git. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเบเบฒเบ™เป‚เบเบเบเป‰เบฒเบเบ•เปเปˆเบกเบฒ .git เบˆเบฒเบเบฎเบนเบšเบžเบฒเบšเบชเบธเบ”เบ—เป‰เบฒเบเบˆเบฐเบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ: เบฎเบนเบšเบžเบฒเบšเบเบฑเบ‡เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบŠเบฑเป‰เบ™เบžเบดเป€เบชเบ” - เบ™เบตเป‰เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ Docker.
  3. Docker เบชเบฒเบกเบฒเบ”เบฅเบดเป€เบฅเบตเปˆเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ„เบทเบ™เปƒเบซเบกเปˆเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ”เบฝเบงเบเบฑเบ™, เปเบ•เปˆเบกเบฒเบˆเบฒเบเบ•เบปเป‰เบ™เป„เบกเป‰เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, GitLab เบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต cloned เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปƒเบ™ /home/gitlab-runner/builds/HASH/[0-N]/yourproject เป€เบกเบทเปˆเบญเบเบฒเบ™เบ›เบฐเบเบญเบšเบ‚เบฐเบซเบ™เบฒเบ™เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰. เบเบฒเบ™เบ›เบฐเบเบญเบš reassembly เบžเบดเป€เบชเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเป‰เบญเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต .git เปเบกเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เบชเบฐเบšเบฑเบš cloned เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡ repository เบ”เบฝเบงเบเบฑเบ™, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ–เป‰เบฒเบซเบฒเบเบงเปˆเบฒเบ„เปเบฒเบซเบกเบฑเป‰เบ™เบชเบฑเบ™เบเบฒเบ”เบฝเบงเบเบฑเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™.

เบˆเบธเบ”เบชเบธเบ”เบ—เป‰เบฒเบเบเบฑเบ‡เบกเบตเบœเบปเบ™เบชเบฐเบ—เป‰เบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰ werf. Werf เบ•เป‰เบญเบ‡เบเบฒเบ™ cache เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบตเบขเบนเปˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบฅเปˆเบ™เบšเบฒเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡ (เป€เบŠเบฑเปˆเบ™:. werf deploy). เป€เบกเบทเปˆเบญเบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™, werf เบˆเบฐเบ„เบดเบ”เป„เบฅเปˆเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบชเปเบฒเบฅเบฑเบšเบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ werf.yaml, เปเบฅเบฐเบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบขเบนเปˆเปƒเบ™ cache เบเบฒเบ™เบ›เบฐเบเบญเบš - เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบ•เปเปˆเป„เบ›เป„เบ”เป‰. เบ–เป‰เบฒเบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เป€เบงเบ—เบตเปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบ™เบทเป‰เบญเบซเบฒ .git, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš cache เบ—เบตเปˆเบšเปเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ•เปเปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡, เปเบฅเบฐ werf เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบซเป‰เบญเบฐเป„เบžเบเบฒเบ™เบเบงเบ”เบเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง (เบชเปเบฒเบฅเบฑเบšเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เป€เบšเบดเปˆเบ‡. เป€เบญเบเบฐเบชเบฒเบ™).

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ› เป€เบžเบตเปˆเบกเป„เบŸเบฅเปŒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเบฐเป€เบžเบฒเบฐ เป‚เบ”เบเบœเปˆเบฒเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ ADD เปƒเบ™เบเปเบฅเบฐเบ™เบตเปƒเบ”เบเปเปˆเบ•เบฒเบก, เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบฅเบฐเบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบทเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™ Dockerfile, เปเบฅเบฐเบเบฑเบ‡เบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ‚เบญเบ‡ cache เบ—เบตเปˆเป€เบเบฑเบšเบเปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰ Dockerfile, เบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบšเปเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เปƒเบ™ Git.

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš

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

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ‚เบฝเบ™เบ•เบปเบงเบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบชเบนเบ™เป€เบชเบเบเบฒเบ™เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Dockerfiles เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง. เบ•เบญเบ™เบ™เบตเป‰เบ‚เปเป‰เบšเบปเบเบžเปˆเบญเบ‡เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเปเบเป‰เป„เบ‚เปเบฅเป‰เบง, เปเบฅเบฐเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เบžเบงเบเป€เบฎเบปเบฒเบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Dockerfile เบžเป‰เบญเบกเบเบฑเบšเบ•เบปเบงเบชเป‰เบฒเบ‡ Stapel เปเบšเบšเบเปเบฒเบ™เบปเบ”เป€เบญเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบเบญเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบเปเบฅเบฐเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบเบญเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Kubernetes (เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบ›เบฐเบเบญเบšเปƒเบชเปˆเป€เบ„เบทเปˆเบญเบ‡เปเบฅเปˆเบ™เบžเบฒเบเปƒเบ™ Kubernetes, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบ™ kaniko).

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ—เบฑเบ™เบ—เบตเบ—เบฑเบ™เปƒเบ”เบกเบต Dockerfiles เบชเบญเบ‡เบญเบฑเบ™เบขเบนเปˆเบญเป‰เบญเบก ... เบžเบฐเบเบฒเบเบฒเบก werf!

PS เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป€เบญเบเบฐเบชเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบซเบปเบงเบ‚เปเป‰

เบญเปˆเบฒเบ™เปƒเบ™ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ: "werf - เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเปเบฒเบฅเบฑเบš CI / CD เปƒเบ™ Kubernetes (เบžเบฒเบšเบฅเบงเบกเปเบฅเบฐเบšเบปเบ”เบฅเบฒเบเบ‡เบฒเบ™เบงเบดเบ”เบตเป‚เบญ)".

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

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