ααΊαβαααααΎαβααΆαβα’ααααααΆαα α¬αααααααααΎαααααΎαααααΆαααα α»ααααααααααααααα·αααΆαααΆαααΆαααααααααΆαα Dockerfiles ααααααΆααΎααααΈαααααΎαααΌαααΆααααααα·ααΈα
ααΎαααΉααα·ααΆαα’αααΈ
- αααααΌααα·αααααα»αααααΌαααΆα,
- ααΆαααααααΆααααααα·ααΈαα αααα»α Kubernetes,
- αα»αααΌαααΆαααααα·αααααΎαααααααΎαααααΆααααα·αααα
ααααααα·ααααΆααααααααααααΊαααααΌαα§αααααααααα·αααΆαα
αΌααα
αααα»αααααααααααααα½αααααα½ααααα½αααααααααα±αααα·ααααα DevOps αααααααααααΎαααααα·ααΈα ααααα·αααΎα’αΆα
ααααΎααΆα α§αααααααααΎααααΆαααααααΆαααααΆαα (ααΌα
ααΆ Helm αα·α Docker) αα½αααααααΌαααΆαααααΎα ααααα·αααΎααααΆααααααααααΆαα
αααααααα αΆαα ααΎαα’αΆα
αααααΎα αα·αααΆααααα’αααΈαααααααααΆααααα
αΆαααΆα
ααααααΆαααααα αΆαααα
ααααααΆααααααα α’ααααααααΌαααΌαααΆαααααΆαααααα½αααααα’αααα
αααααΆα’αααΈαααααΆαααΎαα‘αΎαααΆαα½αα’ααααααααΌαααΌαααΆααααα»α werfα Dockerfile ααααααΆαα·ααααααααααΆαααααααΆααααΎαααα ααααα·αααΎα’ααααααα‘ααααΎααααααααα·ααααααααααα αααα αΆαααααΆαααα
α‘αΎααα½α
α αΎααα
αααα»αααααααααΌααα werf (αααααΆαααααα
αα
ααααααααααααααΎαα§ααααααααααΆαααααααΎααααααα·ααΈα αΌααα αααα»αααΌαααΆα Docker ααΎαααΆαααΉαααααΆααααΆ Dockerfile αα·ααααααα·αααααααΆααααΎααααααΆαααα·α αα ααΆαααΆααααΆαααα½αα ααα½αα
- ααααΌαααΆαααΎααααΈαααααΎααααααα·ααΈαααααΆαααΌα
ααααααΆααΆααααααααΆααααααααααΆαααΆααααααα
- ααα‘αΎαααΆαα’αΆααααααααααα·ααΈααααααααααα,
- ααα‘αΎαααααα»ααααααααΆαααααΆαα’αΆααααααααααα·ααΈ,
- αααααΌααααααααααααααα·,
- α αΎαααααΆαααααα»α ααααΎαα αα α»ααααααααΆαααΌααααα»αααΌαααΆααααΆααα αα αα·αααΆαααααα·αααααΆαα
- αα ααααααααΆαααααΆααααααΌαααααΌαααΆαααααΎα‘αΎαα ααααα―αααΆααααααα α’αααααΆααααααααΌααααααααΎααααααΆααααααΈαααΆαααΆαααα αααααα’αα»αααααααααα ααΉαα―αααΆααααααΆαααααΆααααααΌαα
- ααααα·αααΎα―αααΆααα½αα ααα½αααΆαααααΆααααααΌα αααα αΆαααΆα αααααΌααααααΎαααααΆααααΆαα’αΆααααααααααααΌαααααΆα‘αΎααα·αα
ααααααααααα α’ααααααααΌαααααααΎαααΆαααααααΆαααΆα αααΎαααα ααα»ααααααΆαααααααΊααΆααααααααΆααααΆ αα·αααΆαααααα»αααααΌαα
ααΆααΌαα
ααααα·ααα·αααΈααα ααΎαααΆαααααΆαααααα½αααΎαααΆαα½αααΉαααΆααΆααααααααααα·ααΈαααααΎαααΆαααααΎ (ααΎαβααΆαβααααα) αα·αααΆαααααΌαααΎααααΈα’αα»αααα DSL ααααΆαααααα½α! α’αα»αααααΆαααααααα ααΆααΆαααααααααα·αααααΆα’αααΈααααΎαααΆααα½αααααα»αααααΆααΆααααΆααααΆα αα·ααααααααΆαα’αΆαααααααααααΆααααΆαααΆαααααααΎα―αααΆαα α αΎαααΆαααααααααααα α’ααααααααΌαααααΆαααααα½ααααααΆαααααααααΆα DSL αα
ααΆααααα
α
α»αααααα - ααΌαααΆααααααΆααα½αααααα»αααααΆα ααααΌα DSL ααΊαα
αααα»α Ruby ααα»ααααααΌα
ααΆαααααααα
ααΆααααααααα
αΆαααααααΆαα dapp αα
αααα»α Ruby
ααΆαααααααα
αα
α»αααααααααααΆαα werf αα
ααΎ YAML
ααααααΆαααααα’ααααααααΌαααααααΆααααααΌαααΆααααααααΆα ααααΌαα‘αΎα ααΎαααααΆαααααααααΎα Dockerfile ααααααα’αΆααααααααΆααααΈααΆαααααααα ααΆααααααααααααααΎα α αΎααααααΆααααααΎαα αΆααααααΎαααααΎαααΆαααα ααααΈααααΆαα’αααΈααΆααα½αααααα»αααααΆαα αααα»ααα»αααΊαααααααααα’αΆαααα α αΎαααααααααΆα
NBα αα
αααααα α’ααααααααΌαααααααΎααααααααΎααΆαααΆαα½αααΆαααααααα
ααΆααααααααααααααΆααααΆαα (αα
αααα»α YAML) αα·αααααΌαααΆαααα α
ααΆα’ααααααααΌα Stapel ααΆααααααΎααα½α
α αΎααα
ααΆα§αααααααααΆαα₯αααα·ααα ααΆααα·αααααΆαααα’α·αααααααΆααααΉαα’αααααααΆα
ααααα‘αα α αΎαααααααΆααααα’α·αααΆααΌαααααΆαα’αΆα
ααααΆααα
αααα»α
ααΆααααααΉαα’αααΈαααα αΆ
ααα»ααααβααΎαβααΆαβααΉαβα αΎαβαα·ααααβααααΆααβααβααΆβααΎαβααΆαβααα α»αβαα½αβααΊβααΎαβαα·αβααΆαβααααααβαααααααΆα αααααΎαααΌαααΆαααΆαααα Dockerfile αααααααΆα α αΎααααα αΌααα½αααΆαα αααα»αα αααααΆαα ααΆααααααααααααααααααααααα·ααΈααΈα α»ααααα ααααΌα ααααΆ (α§. αααααΌαααΌαααΆα ααΆαααααααΆα αα·ααααα’αΆααα½αααΆ)α ααΎααΆα’αΆα ααααΎααΌα ααααα ααΎααααΈααααΎα±ααα§ααααααααααΆααααΆααα±ααααααΎααααΆαααα αααα»α Kubernetes αα·ααα·αα’αα»ααααααΆαααΆαααα Dockerfile αααααΊα§α αα·ααΈαααααααΆαααΎααααΈαα·αααααΆααΌαααΆααααααΆααααααααααΆαα αααΎα?..
αααα½αα±ααααΆαααααΎααααα½αααα ααΎααααααααΌαααΌααααααααααΆααα½αα α α»αααΎα’αααααΆα Dockerfile (α¬αααα»α Dockerfiles) α αΎαα ααααααΎ werf?
NBα αα·ααΆαα’ααα αΉα α ααα»α’αααΈααΆαααΆα’αααα ααααααΎ werf? ααααααααααΆαααααΆαααΌα ααΆααααααα
- ααααααααΆαααααααααααααααα·ααΈαααααα αα½αααΆααααΆααααα’αΆαααΌαααΆαα
- αααααααΆααααα»αααΆααααααααααααΆααα½αααααα»αααααΆααααΌαααΆαααΆα αααΎααααα»αααααααα½αααΈααΆαααααααααα½α;
- ααααΎαααΆαααΆαααααααΆααααααΎαα‘αΎααααααΆααααααΌαααΆααααααααααΆααΆαα½α Helm α
αααααΈααααααααααααααααααα½αααΆα’αΆα
ααααΆααα
ααΌα αααα ααααα·αααΎαα»αααα αα½αααΎαααΉαααααΎα±ααααααα Dockerfile α‘αΎααα·ααα αααα»α config ααααααΎαα₯α‘αΌαααα ααΎαααΉααα·ααΆααααααΈαααΆαααΆ "Let werf build your Dockerfiles!"
ααααααααΎ?
ααΆαα’αα»αααααααααααααααααααα·ααααααααΆααααα αΆααααα½ααα
αααα»αααΆαα
ααααααΆα 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 α ααΆααα·αααααΆααααααααααΆαααααααα
ααΆααααααααααΌαααΆα 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 αααααΆ α αααααΆαααΌαααΆαα α»ααααααααααΌαααααααΆαααα ααΆαααααααααΆα α·ααααααα½α ααΆαα·ααα½αααααΎααΆααααgit checkout
ααΆαβαααααααΉαααβααΆαβα’αααΎβα α·αααα -
.git
αααααΎαααα αααααΌαααΆα (ααααΆααα’αΆα ααΆαααα ααααααααΆαααα―αααΆαααααααααααΌαααΆααααααααα ααΆα αΎααααααΆαααααα»α) α ααα ααααααααΆαααΆαααΆααααααΆααααααααΆαα½αααΆαααααααααΆα α·αααααΆααααΆαααα½αααΉααα·αα’αΆαααααααΎαααααααα·ααααααα·ααααα·ααΆααα αααα»α Git αααααα αααα»αααααΈαααααΆααααααααα·αααΆαααα ααααΆαααααααααΆαα.git
ααΈααΌαααΆαα α»ααααααααΉααα·αααααΎαααΆαααα ααΌαααΆαααΉααα ααααα½αααΆααααααΆαααααααα - αααααΆααααααα Docker ααααΎαααΆαα - Docker α’αΆα
αααα½α
ααααΎαααΆααααΆαα‘αΎααα·αααααα·αα
αΆαααΆα
α ααΎαααααΈααΆααΆαααααααααΆααΌα
ααααΆαααα»αααααΌαααΆαααΆαααα ααα»ααααααααΈααΎαααΎααΆαααΆαααααααααααΆα α§ααΆα ααα GitLab αααααΎαααααααΌαααΆα
ααααα‘ααααΈααααΆα
/home/gitlab-runner/builds/HASH/[0-N]/yourproject
αα ααααααααΆαααα‘αΎααααΆαααΆα‘ααααααΌαααΆαααΎαα ααΆααααα»αα‘αΎααα·αααααααααΉαααΎαα‘αΎααααααΆαααααΆααα·αααααα.git
ααΊαα»αααααΆαα αααα»αααααααααΌααααααααααΆααααααΆααααΌα ααααΆ ααΎαααααΈααΆααΆαααααααααΆα α·αααααΌα ααααΆααααΌαααΆααααααΎαα‘αΎααααααα
α
ααα»α
α
α»ααααααααααΆααααα·ααΆααα
αααααααΎ werf α Werf αααααΌαα±ααααααΆαααααααΆαααααααΆαααΆααααααΆαααααααΆααα
αααααααΎαααΆαααΆααααααααΆαα½αα
ααα½α (α§. werf deploy
) αα
ααααααααΆααααααααΆααΆαααααααααΎαααΆα werf ααααΆα αααααααΆααααΆααααΆααααααΆααααΌαααΆααααααΆααααααΆαααα
αααα»α werf.yaml
α αΎααα½αααααααΌααααα
αααα»αααααΆαααααααΆααααΆααα½αααααα»αααααΆ - ααΎαα·αααΌα
ααααααααΆααααααααΆααΉααα·αα’αΆα
ααααααααΎαααΆαααΆαααα ααααα·αααΎα αααααααΆααααΆααααΆαα’αΆαααααααΎααααΉαααΆα .git
αααααΆααααααΎαααα½αααΆαααααΆαααααααΆααααααα·ααααα·ααααααα
ααααααΆαααααΆααααααΌαα―αααΆαααααα·αααΆααααααα α αΎα werf ααΉααα·αα’αΆα
α’αααααα±ααααΆααααα½ααα·αα·αααααααααααΆααα (αααααΆααααααααΆααααα’α·α ααΌαααΎα
ααΆααΌαα
ααααααααα―αααΆαα
αΆαααΆα
ααα½αα
ααα½α ααΆααααααΆαααααΆα ADD
αααα»αααααΈααΆααααααααααΎαααααα·αααααΆααα·αααΆαααΏααΆααααααΆαααααα Dockerfile
α αΎαααΆααααααΎα’αααααααΎαα‘αΎαααΌααααααααΆαααααααΆαααααααΆααααααααααΌαααΆααααααΆααααΆααααα Dockerfile
αα
ααΉαααΆαααααΆααααααΌαααααα·αααΆααααααααα
αααα»α Git α
αααααα
ααααΌαααααΌαααααααΎααααα»αααΆαααααααααααα·ααΈααΆααααααααΆαααααα½αααααααΎααααααΆαααααααΌαααΆαααΆααααΆααααΊαα·ααΆα αααααααααα αα·ααααααα αααα½αα±ααααΆαααααΎααΎα αααααα ααΎ Dockerfile αααααααΆα ααΎαααΆαααααααααααααααΆαααααααΎαααΆαα½αααΉαααΆαααααααααααααααΆαααααα½αα α αΎααααααΆααα»ααααααααα·ααααααΆ: α’ααααααααΌα Stapel αααααααΆαααΆααα·α αα ααααααΆαααΆαααα’α₯αααα ααα
ααααααΆαααΆααααα αα αααα»αααααΎαααΆαααααΆαααααααααααα·ααΈααΆααααααααΆαααααα½αααααααΎα ααΎαααΆαααΆαααααααΆαααΎαααΎαααααΆαααΆαααααααααΆαα Dockerfiles αααααΆαααααΆααα α₯α‘αΌαααα ααα α»ααααααααΌαααΆααα½ααα»α α αΎααα αααα’ααΆαα ααΎαααΆααααααααααααΎαααΆαααΆαααα Dockerfile αα½αααΆαα½αααΉαα’ααααααααΎα Stapel ααααΆαααααα½αααααααΎααααααΆααααΆαααααΆαααΆαααααΆαα ααα αΆα αα·ααααααΆααααΆααααααΎααααααααΎ Kubernetes (α§ααΆα ααα αααααΎααα ααΎα’ααααααααΆααααα»α Kubernetes ααΌα αααααΆαααααΎαα αααα»α kaniko)α
ααΌα
ααααααααα·αααΎα’αααααααΆααααααΆα Dockerfiles ααΈαααΈαααα»ααααα·ααα
αα»ααα·α... ααΆααααα
PS αααααΈα―αααΆαααΎαααααΆααα
-
ααΆαααααΆααααααΆααααΆαα αΆααααααΎααα αα ; -
ααΆαααααααα ααΆαααααααα dockerfile builder ; -
α§αααααααααΆααααΆααα αααα»α werf ; -
ααααΎαααΆαααααα»αααααΌαααΆα ; -
ααΆααα½ααααα αΌαααΆαα½αααααΎαααΆαααΆααα±ααααααΎααααΆαα Kubernetes ; -
ααααΎαααΆαααα’αΆα ; -
Stapel builder ααΆαααααΎααααα½α Dockerfile .
ααΌαα’αΆαααααααα
αααα»ααααα»αααααααΎαα "
ααααα: www.habr.com