ืืืื ืืืืืจ ืืืขืืื ืื. ืื ืืื ืืืขื ืขืฉืื ื ืืขืืช ืจืฆืื ืืช ืืื ืฉืืื ืื ื ืชืืืื ื-Dockerfiles ืจืืืืื ืืื ืืืช ืชืืื ืืช ืืืฉืืืื.
ื ืืืจ ืขื
- ืืืกืืฃ ืืืคืจืกื ืชืืื ืืช,
- ืืคืจืืก ืืืฉืืืื ื- Kubernetes,
- ืืืืืง ืชืืื ืืช ืฉืืื ื ืืฉืืืืฉ ืืืืฆืขืืช ืืืื ืืืช ืืืืืืช.
ืืคืืืืกืืคืื ืฉื ืืคืจืืืงื ืืื ืืืกืืฃ ืืืื ืืจืื ื ืืืื ืืชืื ืืขืจืืช ืืืืืืช ืืืช ืฉื ืืชื ืช ืืืื ืืกื DevOps ืฉืืืื ืขื ืืืฉืืืื. ืืืืืช ืืืคืฉืจ, ืืฉ ืืืฉืชืืฉ ืืืื ืขืืจ ืงืืืืื (ืืื Helm ื- Docker). ืื ืืื ืคืชืจืื ืืืขืื, ื ืืื ืืืฆืืจ ืืืชืืื ืืื ืืืจืืฉ ืืฉื ืื.
ืจืงืข: ืืกืคื ืชืืื ืืช ืืฉืื
ืื ืื ืฉืงืจื ืขื ืืกืคื ืืชืืื ืืช ื-werf: ื-Dockerfile ืืจืืื ืื ืืกืคืืง ืื ื. ืื ืชืขืืฃ ืืื ืืืืจ ืืืืกืืืจืื ืฉื ืืคืจืืืงื, ืืขืื ืื ืืืคืืขื ืืืจ ืืืจืกืืืช ืืจืืฉืื ืืช ืฉื werf (ืืื ืขืืืื
ืชืื ืืื ืืฆืืจืช ืืื ืืื ืืืช ืืืฉืืืื ืืชืื ืชืืื ืืช Docker, ืืืจ ืืืื ืืื ื ืฉ- Dockerfile ืื ืืชืืื ืื ื ืืืื ืืฉืืืืช ืืืื ืกืคืฆืืคืืืช:
- ืืฆืืจื ืืื ืืช ืืืฉืืื ืืื ืืจื ื ืงืื ืื ืืืคืืกืืื ืืคื ืืกืืืื ืืกืื ืืจืืืช ืืืื:
- ืืืชืงืื ืชืืืช ืฉื ืืืฉืืืื ืืื-ืืขืจืืชืืื,
- ืืชืงื ืืืืื ืฉื ืกืคืจืืืช ืชืืืช ืืืคืืืงืฆืืืช,
- ืืืกืืฃ ื ืืกืื,
- ืืืื ืืฉืื, ืขืืื ื ืืช ืืงืื ืืชืืื ื ืืืืืจืืช ืืืืขืืืืช.
- ืืืฉืจ ืืชืืฆืขืื ืฉืื ืืืื ืืงืืฆื ืืคืจืืืงื, ืขื ืืืื ื ืืืฆืืจ ืืืืืจืืช ืฉืืื ืืืฉื ืขื ืืื ืืืืช ืชืืงืื ืขื ืืงืืฆืื ืฉืืฉืชื ื.
- ืื ืงืืฆืื ืืกืืืืื ืืฉืชื ื, ืืฉ ืฆืืจื ืืื ืืช ืืืืฉ ืืช ืืฉืื ืืชืืื ืืืชืืื.
ืืืื ืืืกืคื ืฉืื ื ืืฉ ืืจืื ืืคืฉืจืืืืช ืืืจืืช, ืืื ืืื ืืื ืืจืฆืื ืืช ืืืืืคืื ืืจืืฉืื ืืื.
ืืืืคื ืืืื, ืืื ืืืฉืื ืคืขืืืื, ืืชืืืฉื ื ืืฉืคืช ืืชืื ืืช ืฉืื ืืฉืชืืฉื ื (ืจืื ืืืื) ืืืฆืืช ืืืจื ืืืืฉื DSL ืืฉืื! ืืืชืื ืืืืจืืช, ื ืืขื ืืชืืจ ืืช ืชืืืื ืืืจืืื ืืฉืืืื ืืืงืืืข ืืช ืืชืืืช ืฉื ืฉืืืื ืืื ืืชืืงืื. ืืืฉืืื ืืืชื ืืกืคื ืืฉืื, ืฉืืคื ืืช ื-DSL ืืืืจื ืืกืืคืืช - ืชืืื ื ืืืจืืืช. ืืืชืืื ื-DSL ืืื ืืจืืื, ืืื ืืื
ืชืฆืืจื ืืฉื ื ืขืืืจ dapp ืืจืืื
ืืชืฆืืจื ืื ืืืืืช ืขืืืจ werf ื-YAML
ืื ืื ืื ืื ืืืกืคื ืืฉืชื ื ืขื ืืืื. ืืืชืืื, ืคืฉืื ืืฆืจื ื ืงืืืฅ Dockerfile ืืื ื ืืืชืฆืืจื ืฉืื ื, ืืื ืืชืืื ื ืืืจืืฅ ืืืจืืืช ืืจืืื ืืงืื ืืืื ืจืื ืืื ืืื ืืืืฆืข commit.
NB: ืืจืืข, ืืืกืคื ืฉืื ื, ืฉืขืืื ืขื ืชืฆืืจื ืืฉืื (ื-YAML) ืื ืงืจื ืืกืคื Stapel, ืืืจ ืืชืคืชื ืืืื ืืืง ืืืื. ืืชืืืืจ ืืืคืืจื ืฉืื ืจืืื ืืืืืจืื ื ืคืจืืื, ืื ืืชื ืืืฆืื ืคืจืืื ืืกืืกืืื ื
ืืืืขืืช ืืืขืื
ืืื ืืื ื, ืืื ืืื, ืฉืขืฉืื ื ืืขืืช ืืืช: ืื ืืืกืคื ื ืืช ืืืืืืช ืืื ืืช ืชืืื ืืช ืืืืฆืขืืช Dockerfile ืจืืื ืืืฉืื ืืืชื ืืืืชื ืชืฉืชืืช ื ืืืื ืืคืืืงืฆืืืช ืืงืฆื ืืงืฆื (ืืืืืจ ืืืกืืฃ ืชืืื ืืช, ืืคืจืืก ืืื ืงืืช ืืืชื). ืืื ืืคืฉืจ ืืขืฉืืช ืืื ืืคืจืืกื ื- Kubernetes ืืื ืืืืฉื ืชืืืื ื- Dockerfile, ืืืืืจ. ืืจื ืกืื ืืจืืืช ืืชืืจ ืชืืื ืืช ืขืืืจ ืจืื ืืคืจืืืงืืื?
ืืืงืื ืืขื ืืช ืขื ืฉืืื ืื, ืื ื ืืฆืืขืื ืคืชืจืื. ืื ืื ืืืจ ืืฉ ืื Dockerfile (ืื ืงืืืฆื ืฉื Dockerfile) ืืืชื ืจืืฆื ืืืฉืชืืฉ ื-werf?
NB: ืืจื ืืื, ืืื ืืืื ืชืจืฆื ืืืฉืชืืฉ ื-werf? ืืชืืื ืืช ืืขืืงืจืืืช ืืกืชืืืืช ืื ืงืืืืช ืืืืืช:
- ืืืืืจ ื ืืืื ืืืฉืืืื ืืื ืืืื ื ืืงืื ืชืืื ื;
- ืืืืืืช ืื ืื ืืช ืืืจืืื ืฉื ืืกืคืจ ืชืืื ืืช ืื-ืืื ืืช ืืชืฆืืจื ืืืช;
- ืชืืืื ืคืจืืกื ืืฉืืคืจ ืขืืืจ ืชืจืฉืืืื ืชืืืื Helm.
ืจืฉืืื ืืืื ืืืชืจ ืฉืืื ื ืืชื ืืืฆืื ืืืชืืืช
ืื, ืื ืงืืื ืืื ืืืื ื ืืฆืืขืื ืืฉืืชื ืืช ื- Dockerfile ืืชืฆืืจื ืฉืื ื, ืขืืฉืื ื ืืื ืืฉืืื: "ืชื ื-werf ืืื ืืช ืืช ื- Dockerfile ืฉืื!"
ืืืฆื ืืืฉืชืืฉ?
ืืืืฉืื ืืืื ืฉื ืชืืื ื ืื ืืืคืืข ืืืืืืจื werf build
... ืืืื - werf ืชืจืืื ืืช ืืชืืื ื. ืืืื ื ืกืชืื ืขื ืืืืื ืืืคืฉืืช.
ืืืื ื ืืจืื ืขื ืืื Dockerfile
ืืฉืืจืฉ ืืคืจืืืงื:
FROM ubuntu:18.04
RUN echo Building ...
ืืื ืื ื ื ืืจืื werf.yaml
ืฉืืฉืชืืฉ ืืื Dockerfile
:
configVersion: 1
project: dockerfile-example
---
image: ~
dockerfile: ./Dockerfile
ืืช ืื! ืฉืืืื ืืจืืฅ werf build
:
ืื ืืกืฃ, ืืชื ืืืื ืืืฆืืืจ ืขื ืืืืจืื ืืืืื 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 ืืชืฉืชืืช ืฉืื. ืื ืื ืืืืจ?
- ืื ืชืืื ื ืืื ืืื ื-Dockerfile ืืืจืืืช ืืฉืื ืืื ืฉื ืงืจื
dockerfile
(ืชืืื ืืงืจืื ืขืื ืขื ืืืื ืฉืืืื ื ืืฆืืื ื-werfืืื ). - ืืืื
dockerfile
werf ืืืฉื ืืชืืื ืฉืชืืืื ืืชืืื ืฉื ืชืฆืืจืช Dockerfile. ืืืฉืจ ืชืฆืืจืช Dockerfile ืืฉืชื ื, ืืชืืืช ืืืื ืืฉืชื ืdockerfile
ื-werf ืืืื ืื ืืื ืืืืฉ ืฉื ืืฉืื ืืื ืขื ืชืฆืืจืช Dockerfile ืืืฉื. ืื ืืืชืืื ืื ืืฉืชื ื, werf ืืืงื ืืช ืืชืืื ื ืืืืืืื (ืคืจืืื ื ืืกืคืื ืขื ืืฉืืืืฉ ืืืชืืืืช ื-werf ืชืืืจื ืืืืื ืืื ). - ืืืืจ ืืื, ื ืืชื ืืคืจืกื ืืช ืืชืืื ืืช ืฉื ืืกืคื ืืืืฆืขืืช ืืคืงืืื
werf publish
(ืืwerf build-and-publish
) ืืืฉืชืืฉ ืื ืืคืจืืกื ื-Kubernetes. ืชืืื ืืช ืฉืคืืจืกืื ื-Docker Registry ืื ืืงื ืืืืฆืขืืช ืืื ื ืืงืื ืกืื ืืจืืืื ืฉื werf, ืืืืืจ. ืชืืื ืืช ืืฉื ืืช (ืืืชืจ ื-N ืืืื), ืชืืื ืืช ืืงืฉืืจืืช ืืกื ืืคื Git ืฉืืื ื ืงืืืืื ืืืืื ืืืช ืืืจืช ืื ืืงื ืืืืืืืืช.
ืคืจืืื ื ืืกืคืื ืขื ืื ืงืืืืช ืืืชืืืจืืช ืืื ื ืืชื ืืืฆืื ืืชืืขืื:
-
ืชืืืื ืคืจืกืื ; -
ืืื ืืืจืฆืื ืขื ืชืืืื ืืคืจืืกื ืฉื Kubernetes ; -
ืชืืืื ื ืืงืืื .
ืืขืจืืช ืืืืฆืขื ืืืืจืืช
1. ืืชืืืช URL ืืืฆืื ืืช ืืื ื ื ืชืืืช ื-ADD
ื ืืื ืืขืืฉืื ืืื ืชืืืื ืืฉืืืืฉ ืืืชืืืช URL ืืืฆืื ืืช ืืื ืืื ADD
. Werf ืื ืืืืื ืื ืืื ืืืืฉ ืืืฉืจ ืืืฉืื ืืืชืืืช ื-URL ืฉืฆืืื ื ืืฉืชื ื. ืื ื ืืชืื ื ืื ืืืืกืืฃ ืชืืื ื ืื ืืงืจืื.
2. ืืชื ืื ืืืื ืืืืกืืฃ .git ืืชืืื ื
ืืืืคื ืืืื, ืืืกืคืช ืกืคืจืืื .git
ืืชืืื ื - ืื ืื ืจืข ืืจืืฉืข ืืื ื ืืกืืื:
- ืื
.git
ื ืฉืืจ ืืชืืื ื ืืกืืคืืช, ืื ืืคืจ ืืช ืืขืงืจืื ืืชืืคืืืงืฆืืืช 12 ืืืจืืื : ืืืืืื ืฉืืชืืื ื ืืกืืคืืช ืืืืืช ืืืืืช ืืงืืฉืจืช ื-commit ืืืื, ืื ืื ืืืืจ ืืืืืช ืืคืฉืจื ืืขืฉืืชgit checkout
ืืชืืืืืืช ืฉืจืืจืืชืืช. -
.git
ืืืืื ืืช ืืืื ืืชืืื ื (ืืืืืจ ืืืื ืืืืืช ืืืื ืืืื ืืขืืืื ืฉืคืขื ื ืืกืคื ืื ืงืืฆืื ืืืืืื ืืื ื ืืืงื). ืืืืื ืฉื ืขืฅ ืขืืืื ืืืฉืืื ืจืง ื-commit ืกืคืฆืืคื ืื ืืืื ืชืืื ืืืืกืืืจืื ืฉื ืืคืขืืืืช ื-Git. ืืืงืจื ืื, ืืชืืกืคืช ืืืืกืจื ืฉืืืืจ ืืื.git
ืืืชืืื ื ืืกืืคืืช ืื ืืขืืื: ืืชืืื ื ืขืืืื ืชืจืืืฉ ืฉืืื ื ืืกืคืช - ืื ืคืืขื Docker. - 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 ืฉืืืืื ืืกืืื... ื ืกื ืืช ืื
ื .ื. ืจืฉืืืช ืชืืขืื ืื ืืฉื
-
ืืืจืืืื ืืืชืืื ืืืืจื ; -
ืชืฆืืจืืช ืืื ื dockerfile ; -
ืืืฉืืจ ืฉืืืื ืืืืจืฃ ; -
ืชืืืื ืคืจืกืื ืชืืื ืืช ; -
ืืื ืืืจืฆืื ืขื ืชืืืื ืืคืจืืกื ืฉื Kubernetes ; -
ืชืืืื ื ืืงืืื ; -
Stapel Builder ืืืืืคื ื- Dockerfile .
ืงืจื ืื ืืืืื ืฉืื ื: "
ืืงืืจ: www.habr.com