ื›ืขืช ืืชื” ื™ื›ื•ืœ ืœื‘ื ื•ืช ืชืžื•ื ื•ืช Docker ื‘-werf ื‘ืืžืฆืขื•ืช Dockerfile ืจื’ื™ืœ

ืžื•ื˜ื‘ ืžืื•ื—ืจ ืžืœืขื•ืœื ืœื. ืื• ืื™ืš ื›ืžืขื˜ ืขืฉื™ื ื• ื˜ืขื•ืช ืจืฆื™ื ื™ืช ื‘ื›ืš ืฉืื™ืŸ ืœื ื• ืชืžื™ื›ื” ื‘-Dockerfiles ืจื’ื™ืœื™ื ืœื‘ื ื™ื™ืช ืชืžื•ื ื•ืช ื™ื™ืฉื•ืžื™ื.

ื›ืขืช ืืชื” ื™ื›ื•ืœ ืœื‘ื ื•ืช ืชืžื•ื ื•ืช Docker ื‘-werf ื‘ืืžืฆืขื•ืช Dockerfile ืจื’ื™ืœ

ื ื“ื‘ืจ ืขืœ werf - ื›ืœื™ ืขื–ืจ GitOps ืฉืžืฉืชืœื‘ ืขื ื›ืœ ืžืขืจื›ืช CI/CD ื•ืžืกืคืง ื ื™ื”ื•ืœ ืฉืœ ื›ืœ ืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœ ื”ืืคืœื™ืงืฆื™ื”, ื”ืžืืคืฉืจ:

  • ืœืืกื•ืฃ ื•ืœืคืจืกื ืชืžื•ื ื•ืช,
  • ืœืคืจื•ืก ื™ื™ืฉื•ืžื™ื ื‘- Kubernetes,
  • ืœืžื—ื•ืง ืชืžื•ื ื•ืช ืฉืื™ื ืŸ ื‘ืฉื™ืžื•ืฉ ื‘ืืžืฆืขื•ืช ืžื“ื™ื ื™ื•ืช ืžื™ื•ื—ื“ืช.


ื”ืคื™ืœื•ืกื•ืคื™ื” ืฉืœ ื”ืคืจื•ื™ืงื˜ ื”ื™ื ืœืืกื•ืฃ ื›ืœื™ื ื‘ืจืžื” ื ืžื•ื›ื” ืœืชื•ืš ืžืขืจื›ืช ืžืื•ื—ื“ืช ืื—ืช ืฉื ื•ืชื ืช ืœืžื”ื ื“ืกื™ DevOps ืฉืœื™ื˜ื” ืขืœ ื™ื™ืฉื•ืžื™ื. ื‘ืžื™ื“ืช ื”ืืคืฉืจ, ื™ืฉ ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ ืขื–ืจ ืงื™ื™ืžื™ื (ื›ืžื• Helm ื•- Docker). ืื ืื™ืŸ ืคืชืจื•ืŸ ืœื‘ืขื™ื”, ื ื•ื›ืœ ืœื™ืฆื•ืจ ื•ืœืชืžื•ืš ื‘ื›ืœ ื”ื“ืจื•ืฉ ืœืฉื ื›ืš.

ืจืงืข: ืืกืคืŸ ืชืžื•ื ื•ืช ืžืฉืœืš

ื–ื” ืžื” ืฉืงืจื” ืขื ืืกืคืŸ ื”ืชืžื•ื ื•ืช ื‘-werf: ื”-Dockerfile ื”ืจื’ื™ืœ ืœื ื”ืกืคื™ืง ืœื ื•. ืื ืชืขื™ืฃ ืžื‘ื˜ ืžื”ื™ืจ ื‘ื”ื™ืกื˜ื•ืจื™ื” ืฉืœ ื”ืคืจื•ื™ืงื˜, ื‘ืขื™ื” ื–ื• ื”ื•ืคื™ืขื” ื›ื‘ืจ ื‘ื’ืจืกืื•ืช ื”ืจืืฉื•ื ื•ืช ืฉืœ werf (ื•ืื– ืขื“ื™ื™ืŸ ื”ืžื›ื•ื ื” dapp).

ืชื•ืš ื›ื“ื™ ื™ืฆื™ืจืช ื›ืœื™ ืœื‘ื ื™ื™ืช ื™ื™ืฉื•ืžื™ื ืœืชื•ืš ืชืžื•ื ื•ืช Docker, ืžื”ืจ ืžืื•ื“ ื”ื‘ื ื• ืฉ- Dockerfile ืœื ืžืชืื™ื ืœื ื• ืœื›ืžื” ืžืฉื™ืžื•ืช ืžืื•ื“ ืกืคืฆื™ืคื™ื•ืช:

  1. ื”ืฆื•ืจืš ืœื‘ื ื•ืช ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜ ืงื˜ื ื™ื ื˜ื™ืคื•ืกื™ื™ื ืœืคื™ ื”ืกื›ื™ืžื” ื”ืกื˜ื ื“ืจื˜ื™ืช ื”ื‘ืื”:
    • ืœื”ืชืงื™ืŸ ืชืœื•ืช ืฉืœ ื™ื™ืฉื•ืžื™ื ื›ืœืœ-ืžืขืจื›ืชื™ื™ื,
    • ื”ืชืงืŸ ื—ื‘ื™ืœื” ืฉืœ ืกืคืจื™ื•ืช ืชืœื•ืช ื‘ืืคืœื™ืงืฆื™ื•ืช,
    • ืœืืกื•ืฃ ื ื›ืกื™ื,
    • ื•ื”ื›ื™ ื—ืฉื•ื‘, ืขื“ื›ื ื• ืืช ื”ืงื•ื“ ื‘ืชืžื•ื ื” ื‘ืžื”ื™ืจื•ืช ื•ื‘ื™ืขื™ืœื•ืช.
  2. ื›ืืฉืจ ืžืชื‘ืฆืขื™ื ืฉื™ื ื•ื™ื™ื ื‘ืงื‘ืฆื™ ื”ืคืจื•ื™ืงื˜, ืขืœ ื”ื‘ื•ื ื” ืœื™ืฆื•ืจ ื‘ืžื”ื™ืจื•ืช ืฉื›ื‘ื” ื—ื“ืฉื” ืขืœ ื™ื“ื™ ื”ื—ืœืช ืชื™ืงื•ืŸ ืขืœ ื”ืงื‘ืฆื™ื ืฉื”ืฉืชื ื•.
  3. ืื ืงื‘ืฆื™ื ืžืกื•ื™ืžื™ื ื”ืฉืชื ื•, ื™ืฉ ืฆื•ืจืš ืœื‘ื ื•ืช ืžื—ื“ืฉ ืืช ื”ืฉืœื‘ ื”ืชืœื•ื™ ื”ืžืชืื™ื.

ื”ื™ื•ื ืœืืกืคืŸ ืฉืœื ื• ื™ืฉ ื”ืจื‘ื” ืืคืฉืจื•ื™ื•ืช ืื—ืจื•ืช, ืื‘ืœ ืืœื• ื”ื™ื• ื”ืจืฆื•ื ื•ืช ื•ื”ื“ื—ืคื™ื ื”ืจืืฉื•ื ื™ื™ื.

ื‘ืื•ืคืŸ ื›ืœืœื™, ื‘ืœื™ ืœื—ืฉื•ื‘ ืคืขืžื™ื™ื, ื”ืชื—ืžืฉื ื• ื‘ืฉืคืช ื”ืชื›ื ื•ืช ืฉื‘ื” ื”ืฉืชืžืฉื ื• (ืจืื” ืœืžื˜ื”) ื•ืœืฆืืช ืœื“ืจืš ืœื™ื™ืฉื DSL ืžืฉืœื•! ื‘ื”ืชืื ืœืžื˜ืจื•ืช, ื ื•ืขื“ ืœืชืืจ ืืช ืชื”ืœื™ืš ื”ื”ืจื›ื‘ื” ื‘ืฉืœื‘ื™ื ื•ืœืงื‘ื•ืข ืืช ื”ืชืœื•ืช ืฉืœ ืฉืœื‘ื™ื ืืœื• ื‘ืชื™ืงื™ื. ื•ื”ืฉืœื™ื ืื•ืชื• ืืกืคืŸ ืžืฉืœื•, ืฉื”ืคืš ืืช ื”-DSL ืœืžื˜ืจื” ื”ืกื•ืคื™ืช - ืชืžื•ื ื” ืžื•ืจื›ื‘ืช. ื‘ื”ืชื—ืœื” ื”-DSL ื”ื™ื” ื‘ืจื•ื‘ื™, ืื‘ืœ ื›ืžื• ืžืขื‘ืจ ืœื’ื•ืœื ื’ - ื”ืชืฆื•ืจื” ืฉืœ ื”ืืกืคืŸ ืฉืœื ื• ื”ืชื—ื™ืœื” ืœื”ื™ื•ืช ืžืชื•ืืจืช ื‘ืงื•ื‘ืฅ YAML.

ื›ืขืช ืืชื” ื™ื›ื•ืœ ืœื‘ื ื•ืช ืชืžื•ื ื•ืช Docker ื‘-werf ื‘ืืžืฆืขื•ืช Dockerfile ืจื’ื™ืœ
ืชืฆื•ืจื” ื™ืฉื ื” ืขื‘ื•ืจ dapp ื‘ืจื•ื‘ื™

ื›ืขืช ืืชื” ื™ื›ื•ืœ ืœื‘ื ื•ืช ืชืžื•ื ื•ืช Docker ื‘-werf ื‘ืืžืฆืขื•ืช Dockerfile ืจื’ื™ืœ
ื”ืชืฆื•ืจื” ื”ื ื•ื›ื—ื™ืช ืขื‘ื•ืจ werf ื‘-YAML

ื’ื ืžื ื’ื ื•ืŸ ื”ืืกืคืŸ ื”ืฉืชื ื” ืขื ื”ื–ืžืŸ. ื‘ื”ืชื—ืœื”, ืคืฉื•ื˜ ื™ืฆืจื ื• ืงื•ื‘ืฅ Dockerfile ื–ืžื ื™ ืžื”ืชืฆื•ืจื” ืฉืœื ื•, ื•ืื– ื”ืชื—ืœื ื• ืœื”ืจื™ืฅ ื”ื•ืจืื•ืช ื”ืจื›ื‘ื” ื‘ืงื•ื ื˜ื™ื™ื ืจื™ื ื–ืžื ื™ื™ื ื•ืœื‘ืฆืข commit.

NB: ื›ืจื’ืข, ื”ืืกืคืŸ ืฉืœื ื•, ืฉืขื•ื‘ื“ ืขื ืชืฆื•ืจื” ืžืฉืœื• (ื‘-YAML) ื•ื ืงืจื ืืกืคืŸ Stapel, ื›ื‘ืจ ื”ืชืคืชื— ืœื›ืœื™ ื—ื–ืง ืœืžื“ื™. ื”ืชื™ืื•ืจ ื”ืžืคื•ืจื˜ ืฉืœื• ืจืื•ื™ ืœืžืืžืจื™ื ื ืคืจื“ื™ื, ื•ื ื™ืชืŸ ืœืžืฆื•ื ืคืจื˜ื™ื ื‘ืกื™ืกื™ื™ื ื‘ ืชื™ืขื•ื“.

ืžื•ื“ืขื•ืช ืœื‘ืขื™ื”

ืื‘ืœ ื”ื‘ื ื•, ื•ืœื ืžื™ื“, ืฉืขืฉื™ื ื• ื˜ืขื•ืช ืื—ืช: ืœื ื”ื•ืกืคื ื• ืืช ื”ื™ื›ื•ืœืช ืœื‘ื ื•ืช ืชืžื•ื ื•ืช ื‘ืืžืฆืขื•ืช Dockerfile ืจื’ื™ืœ ื•ืœืฉืœื‘ ืื•ืชื ื‘ืื•ืชื” ืชืฉืชื™ืช ื ื™ื”ื•ืœ ืืคืœื™ืงืฆื™ื•ืช ืžืงืฆื” ืœืงืฆื” (ื›ืœื•ืžืจ ืœืืกื•ืฃ ืชืžื•ื ื•ืช, ืœืคืจื•ืก ื•ืœื ืงื•ืช ืื•ืชืŸ). ืื™ืš ืืคืฉืจ ืœืขืฉื•ืช ื›ืœื™ ืœืคืจื™ืกื” ื‘- Kubernetes ื•ืœื ืœื™ื™ืฉื ืชืžื™ื›ื” ื‘- Dockerfile, ื›ืœื•ืžืจ. ื“ืจืš ืกื˜ื ื“ืจื˜ื™ืช ืœืชืืจ ืชืžื•ื ื•ืช ืขื‘ื•ืจ ืจื•ื‘ ื”ืคืจื•ื™ืงื˜ื™ื?

ื‘ืžืงื•ื ืœืขื ื•ืช ืขืœ ืฉืืœื” ื–ื•, ืื ื• ืžืฆื™ืขื™ื ืคืชืจื•ืŸ. ืžื” ืื ื›ื‘ืจ ื™ืฉ ืœืš Dockerfile (ืื• ืงื‘ื•ืฆื” ืฉืœ Dockerfile) ื•ืืชื” ืจื•ืฆื” ืœื”ืฉืชืžืฉ ื‘-werf?

NB: ื“ืจืš ืื’ื‘, ืœืžื” ื‘ื›ืœืœ ืชืจืฆื” ืœื”ืฉืชืžืฉ ื‘-werf? ื”ืชื›ื•ื ื•ืช ื”ืขื™ืงืจื™ื•ืช ืžืกืชื›ืžื•ืช ื‘ื ืงื•ื“ื•ืช ื”ื‘ืื•ืช:

  • ืžื—ื–ื•ืจ ื ื™ื”ื•ืœ ื™ื™ืฉื•ืžื™ื ืžืœื ื›ื•ืœืœ ื ื™ืงื•ื™ ืชืžื•ื ื”;
  • ื”ื™ื›ื•ืœืช ืœื ื”ืœ ืืช ื”ื”ืจื›ื‘ื” ืฉืœ ืžืกืคืจ ืชืžื•ื ื•ืช ื‘ื•-ื–ืžื ื™ืช ืžืชืฆื•ืจื” ืื—ืช;
  • ืชื”ืœื™ืš ืคืจื™ืกื” ืžืฉื•ืคืจ ืขื‘ื•ืจ ืชืจืฉื™ืžื™ื ืชื•ืืžื™ Helm.

ืจืฉื™ืžื” ืžืœืื” ื™ื•ืชืจ ืฉืœื”ื ื ื™ืชืŸ ืœืžืฆื•ื ื‘ื›ืชื•ื‘ืช ืขืžื•ื“ ื”ืคืจื•ื™ืงื˜.

ืื–, ืื ืงื•ื“ื ืœื›ืŸ ื”ื™ื™ื ื• ืžืฆื™ืขื™ื ืœืฉื›ืชื‘ ืืช ื”- Dockerfile ื‘ืชืฆื•ืจื” ืฉืœื ื•, ืขื›ืฉื™ื• ื ื’ื™ื“ ื‘ืฉืžื—ื”: "ืชืŸ ืœ-werf ืœื‘ื ื•ืช ืืช ื”- Dockerfile ืฉืœืš!"

ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ?

ื”ื™ื™ืฉื•ื ื”ืžืœื ืฉืœ ืชื›ื•ื ื” ื–ื• ื”ื•ืคื™ืข ื‘ืžื”ื“ื•ืจื” 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 - ื“ืจืš werf config. ืชื™ืื•ืจ ืžืœื ืฉืœ ืชืฆื•ืจืช ื”ืชืžื•ื ื” ืฉืœ Dockerfile ื–ืžื™ืŸ ื‘ื›ืชื•ื‘ืช ื“ืฃ ืชื™ืขื•ื“.

ืื™ืš ื–ื” ืขื•ื‘ื“?

ื‘ืžื”ืœืš ืชื”ืœื™ืš ื”ื‘ื ื™ื™ื”, ื”ืžื˜ืžื•ืŸ ื”ืกื˜ื ื“ืจื˜ื™ ืฉืœ ืฉื›ื‘ื•ืช ืžืงื•ืžื™ื•ืช ื‘-Docker ืžืชืคืงื“. ืขื ื–ืืช, ืžื” ืฉื—ืฉื•ื‘ ื–ื” ื’ื werf ืžืฉืœื‘ ืืช ืชืฆื•ืจืช Dockerfile ื‘ืชืฉืชื™ืช ืฉืœื•. ืžื” ื–ื” ืื•ืžืจ?

  1. ื›ืœ ืชืžื•ื ื” ื”ื‘ื ื•ื™ื” ืž-Dockerfile ืžื•ืจื›ื‘ืช ืžืฉืœื‘ ืื—ื“ ืฉื ืงืจื dockerfile (ืชื•ื›ืœ ืœืงืจื•ื ืขื•ื“ ืขืœ ืื™ืœื• ืฉืœื‘ื™ื ื ืžืฆืื™ื ื‘-werf ื›ืืŸ).
  2. ืœื‘ืžื” dockerfile werf ืžื—ืฉื‘ ื—ืชื™ืžื” ืฉืชืœื•ื™ื” ื‘ืชื•ื›ืŸ ืฉืœ ืชืฆื•ืจืช Dockerfile. ื›ืืฉืจ ืชืฆื•ืจืช Dockerfile ืžืฉืชื ื”, ื—ืชื™ืžืช ื”ื‘ืžื” ืžืฉืชื ื” dockerfile ื•-werf ื™ื•ื–ื ื‘ื ื™ื™ื” ืžื—ื“ืฉ ืฉืœ ื”ืฉืœื‘ ื”ื–ื” ืขื ืชืฆื•ืจืช Dockerfile ื—ื“ืฉื”. ืื ื”ื—ืชื™ืžื” ืœื ืžืฉืชื ื”, werf ืœื•ืงื— ืืช ื”ืชืžื•ื ื” ืžื”ืžื˜ืžื•ืŸ (ืคืจื˜ื™ื ื ื•ืกืคื™ื ืขืœ ื”ืฉื™ืžื•ืฉ ื‘ื—ืชื™ืžื•ืช ื‘-werf ืชื•ืืจื• ื‘ ื”ื“ื•ื— ื”ื–ื”).
  3. ืœืื—ืจ ืžื›ืŸ, ื ื™ืชืŸ ืœืคืจืกื ืืช ื”ืชืžื•ื ื•ืช ืฉื ืืกืคื• ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” werf publish (ืื• werf build-and-publish) ื•ื”ืฉืชืžืฉ ื‘ื• ืœืคืจื™ืกื” ืœ-Kubernetes. ืชืžื•ื ื•ืช ืฉืคื•ืจืกืžื• ืœ-Docker Registry ื™ื ื•ืงื• ื‘ืืžืฆืขื•ืช ื›ืœื™ ื ื™ืงื•ื™ ืกื˜ื ื“ืจื˜ื™ื™ื ืฉืœ werf, ื›ืœื•ืžืจ. ืชืžื•ื ื•ืช ื™ืฉื ื•ืช (ื™ื•ืชืจ ืž-N ื™ืžื™ื), ืชืžื•ื ื•ืช ื”ืงืฉื•ืจื•ืช ืœืกื ื™ืคื™ Git ืฉืื™ื ื ืงื™ื™ืžื™ื ื•ืžื“ื™ื ื™ื•ืช ืื—ืจืช ื™ื ื•ืงื• ืื•ื˜ื•ืžื˜ื™ืช.

ืคืจื˜ื™ื ื ื•ืกืคื™ื ืขืœ ื”ื ืงื•ื“ื•ืช ื”ืžืชื•ืืจื•ืช ื›ืืŸ ื ื™ืชืŸ ืœืžืฆื•ื ื‘ืชื™ืขื•ื“:

ื”ืขืจื•ืช ื•ืืžืฆืขื™ ื–ื”ื™ืจื•ืช

1. ื›ืชื•ื‘ืช URL ื—ื™ืฆื•ื ื™ืช ืื™ื ื” ื ืชืžื›ืช ื‘-ADD

ื ื›ื•ืŸ ืœืขื›ืฉื™ื• ืื™ืŸ ืชืžื™ื›ื” ื‘ืฉื™ืžื•ืฉ ื‘ื›ืชื•ื‘ืช URL ื—ื™ืฆื•ื ื™ืช ื‘ื”ื ื—ื™ื” ADD. Werf ืœื ื™ื™ื–ื•ื ื‘ื ื™ื™ื” ืžื—ื“ืฉ ื›ืืฉืจ ื”ืžืฉืื‘ ื‘ื›ืชื•ื‘ืช ื”-URL ืฉืฆื•ื™ื ื” ืžืฉืชื ื”. ืื ื• ืžืชื›ื ื ื™ื ืœื”ื•ืกื™ืฃ ืชื›ื•ื ื” ื–ื• ื‘ืงืจื•ื‘.

2. ืืชื” ืœื ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ .git ืœืชืžื•ื ื”

ื‘ืื•ืคืŸ ื›ืœืœื™, ื”ื•ืกืคืช ืกืคืจื™ื™ื” .git ื‘ืชืžื•ื ื” - ืžื ื”ื’ ืจืข ืžืจื•ืฉืข ื•ื”ื ื” ื”ืกื™ื‘ื”:

  1. ืื .git ื ืฉืืจ ื‘ืชืžื•ื ื” ื”ืกื•ืคื™ืช, ื–ื” ืžืคืจ ืืช ื”ืขืงืจื•ื ื•ืช ืืคืœื™ืงืฆื™ื™ืช 12 ื’ื•ืจืžื™ื: ืžื›ื™ื•ื•ืŸ ืฉื”ืชืžื•ื ื” ื”ืกื•ืคื™ืช ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ืžืงื•ืฉืจืช ืœ-commit ื‘ื•ื“ื“, ื–ื” ืœื ืืžื•ืจ ืœื”ื™ื•ืช ืืคืฉืจื™ ืœืขืฉื•ืช git checkout ื”ืชื—ื™ื™ื‘ื•ืช ืฉืจื™ืจื•ืชื™ืช.
  2. .git ืžื’ื“ื™ืœ ืืช ื’ื•ื“ืœ ื”ืชืžื•ื ื” (ื”ืžืื’ืจ ื™ื›ื•ืœ ืœื”ื™ื•ืช ื’ื“ื•ืœ ื‘ื’ืœืœ ื”ืขื•ื‘ื“ื” ืฉืคืขื ื ื•ืกืคื• ืœื• ืงื‘ืฆื™ื ื’ื“ื•ืœื™ื ื•ืื– ื ืžื—ืงื•). ื”ื’ื•ื“ืœ ืฉืœ ืขืฅ ืขื‘ื•ื“ื” ื”ืžืฉื•ื™ืš ืจืง ืœ-commit ืกืคืฆื™ืคื™ ืœื ื™ื”ื™ื” ืชืœื•ื™ ื‘ื”ื™ืกื˜ื•ืจื™ื” ืฉืœ ื”ืคืขื•ืœื•ืช ื‘-Git. ื‘ืžืงืจื” ื–ื”, ื”ืชื•ืกืคืช ื•ื”ื”ืกืจื” ืฉืœืื—ืจ ืžื›ืŸ .git ืžื”ืชืžื•ื ื” ื”ืกื•ืคื™ืช ืœื ื™ืขื‘ื•ื“: ื”ืชืžื•ื ื” ืขื“ื™ื™ืŸ ืชืจื›ื•ืฉ ืฉื›ื‘ื” ื ื•ืกืคืช - ื›ืš ืคื•ืขืœ Docker.
  3. Docker ื™ื›ื•ืœ ืœื™ื–ื•ื ื‘ื ื™ื™ื” ืžื—ื“ืฉ ืžื™ื•ืชืจืช, ื’ื ืื ืื•ืชื• commit ื ื‘ื ื”, ืื‘ืœ ืžืขืฆื™ ืขื‘ื•ื“ื” ืฉื•ื ื™ื. ืœื“ื•ื’ืžื”, GitLab ื™ื•ืฆืจ ืžื“ืจื™ื›ื™ื ืžืฉื•ื‘ื˜ื™ื ื ืคืจื“ื™ื ื‘ /home/gitlab-runner/builds/HASH/[0-N]/yourproject ื›ืืฉืจ ื”ืจื›ื‘ื” ืžืงื‘ื™ืœื™ืช ืžื•ืคืขืœืช. ื”ื”ืจื›ื‘ื” ื”ื ื•ืกืคืช ืชื”ื™ื” ื‘ืฉืœ ื”ืขื•ื‘ื“ื” ืฉื”ืกืคืจื™ื™ื” .git ืฉื•ื ื” ื‘ื’ืจืกืื•ืช ืžืฉื•ื‘ืœื•ืช ืฉื•ื ื•ืช ืฉืœ ืื•ืชื• ืžืื’ืจ, ื’ื ืื ืื•ืชื• commit ื ื‘ื ื”.

ืœื ืงื•ื“ื” ื”ืื—ืจื•ื ื” ื™ืฉ ื’ื ื”ืฉืœื›ื•ืช ื‘ืขืช ื”ืฉื™ืžื•ืฉ ื‘-werf. Werf ื“ื•ืจืฉ ืฉื”ืžื˜ืžื•ืŸ ื”ื‘ื ื•ื™ ื™ื”ื™ื” ืงื™ื™ื ื‘ืขืช ื”ืคืขืœืช ืคืงื•ื“ื•ืช ืžืกื•ื™ืžื•ืช (ืœืžืฉืœ. werf deploy). ื›ืืฉืจ ื”ืคืงื•ื“ื•ืช ื”ืœืœื• ืคื•ืขืœื•ืช, werf ืžื—ืฉื‘ืช ื—ืชื™ืžื•ืช ืฉืœื‘ื™ื ืขื‘ื•ืจ ื”ืชืžื•ื ื•ืช ืฉืฆื•ื™ื ื• ื‘ werf.yaml, ื•ื”ื ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ื‘-assembly cache - ืื—ืจืช ื”ืคืงื•ื“ื” ืœื ืชื•ื›ืœ ืœื”ืžืฉื™ืš ืœืขื‘ื•ื“. ืื ื—ืชื™ืžืช ื”ื‘ืžื” ืชืœื•ื™ื” ื‘ืชื•ื›ืŸ .git, ืื– ื ืงื‘ืœ ืžื˜ืžื•ืŸ ืฉืื™ื ื• ื™ืฆื™ื‘ ืœืฉื™ื ื•ื™ื™ื ื‘ืงื‘ืฆื™ื ืœื ืจืœื•ื•ื ื˜ื™ื™ื, ื•-werf ืœื ืชื•ื›ืœ ืœืกืœื•ื— ืขืœ ื”ืฉื’ื—ื” ื›ื–ื• (ืœืคืจื˜ื™ื ื ื•ืกืคื™ื, ืจืื” ืชื™ืขื•ื“).

ื‘ืื•ืคืŸ ื›ืœืœื™, ื”ื•ืกืคืช ืจืง ืงื‘ืฆื™ื ื ื—ื•ืฆื™ื ืžืกื•ื™ืžื™ื ื“ืจืš ื”ื”ื•ืจืื•ืช ADD ื‘ื›ืœ ืžืงืจื” ืžื’ื‘ื™ืจ ืืช ื”ื™ืขื™ืœื•ืช ื•ื”ืืžื™ื ื•ืช ืฉืœ ื”ื›ืชื•ื‘ Dockerfile, ื•ื’ื ืžืฉืคืจ ืืช ื”ื™ืฆื™ื‘ื•ืช ืฉืœ ื”ืžื˜ืžื•ืŸ ืฉื ืืกืฃ ืœืฉื ื›ืš Dockerfile, ืœืฉื™ื ื•ื™ื™ื ืœื ืจืœื•ื•ื ื˜ื™ื™ื ื‘-Git.

ืกืš ื”ื›ืœ

ื”ื“ืจืš ื”ืจืืฉื•ื ื™ืช ืฉืœื ื• ืœื›ืชื™ื‘ืช ื‘ื•ื ื” ืžืฉืœื ื• ืœืฆืจื›ื™ื ืกืคืฆื™ืคื™ื™ื ื”ื™ื™ืชื” ืงืฉื”, ื›ื ื” ื•ื™ืฉื™ืจื”: ื‘ืžืงื•ื ืœื”ืฉืชืžืฉ ื‘ืงื‘ื™ื™ื ืขืœ ื’ื‘ื™ Dockerfile ื”ืกื˜ื ื“ืจื˜ื™, ื›ืชื‘ื ื• ืืช ื”ืคืชืจื•ืŸ ืฉืœื ื• ืขื ืชื—ื‘ื™ืจ ืžื•ืชืื ืื™ืฉื™ืช. ื•ืœื›ืš ื”ื™ื• ื™ืชืจื•ื ื•ืช: ืืกืคืŸ ื”-Stapel ืžืชืžื•ื“ื“ ืขื ื”ืžืฉื™ืžื” ืฉืœื• ื‘ืฆื•ืจื” ืžื•ืฉืœืžืช.

ืขื ื–ืืช, ื‘ืชื”ืœื™ืš ื›ืชื™ื‘ืช ื”ื‘ื•ื ื” ืฉืœื ื•, ืื™ื‘ื“ื ื• ืืช ื”ืชืžื™ื›ื” ื‘-Dockerfiles ืงื™ื™ืžื™ื. ืคื’ื ื–ื” ืชื•ืงืŸ ื›ืขืช, ื•ื‘ืขืชื™ื“ ืื ื• ืžืชื›ื ื ื™ื ืœืคืชื— ืชืžื™ื›ืช Dockerfile ื™ื—ื“ ืขื ื‘ื•ื ื” Stapel ื”ืžื•ืชืื ืื™ืฉื™ืช ืฉืœื ื• ืœื”ืจื›ื‘ื” ืžื‘ื•ื–ืจืช ื•ืœื”ืจื›ื‘ื” ื‘ืืžืฆืขื•ืช Kubernetes (ื›ืœื•ืžืจ ื”ืจื›ื‘ื” ืขืœ ืจืฆื™ื ื‘ืชื•ืš Kubernetes, ื›ืคื™ ืฉื ืขืฉื” ื‘-kaniko).

ืื–, ืื ืคืชืื•ื ื™ืฉ ืœืš ื›ืžื” ืงื‘ืฆื™ Dockerfiles ืฉื•ื›ื‘ื™ื ืžืกื‘ื™ื‘... ื ืกื” ืืช ื–ื” werf!

ื .ื‘. ืจืฉื™ืžืช ืชื™ืขื•ื“ ื‘ื ื•ืฉื

ืงืจื ื’ื ื‘ื‘ืœื•ื’ ืฉืœื ื•: "werf - ื”ื›ืœื™ ืฉืœื ื• ืขื‘ื•ืจ CI / CD ื‘-Kubernetes (ืกืงื™ืจื” ื›ืœืœื™ืช ื•ื“ื•ื— ื•ื™ื“ืื•)".

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”