Сергей Перминов
Tinkoff.ru
RUN apk install ...
RUN poetry install
COPY ./code /code
FROM alpine
awesome:2019-09-25-b7ed60f
TeamCity Server
build agent
build agent
build agent
build agent
<...>
RUN apk install ...
RUN poetry install
COPY ./code /code
FROM alpine
awesome-base:v1
FROM awesome-base:v1
awesome:2019-09-25-b7ed60f
build agent
Как понять, какой базовый образ нам нужен?
dockerfile
poetry.lock
md5sum awesome-base.dockerfile
dockerfile
grep 'content-hash' poetry.lock
...
content-hash = "de0b7dd2286198c11fce59..."
...
DOCKERFILE_HASH=$(md5sum awesome-base.dockerfile)
POETRY_HASH=$(grep 'content-hash' poetry.lock)
TAG="$POETRY_HASH-$DOCKERFILE_HASH"
dockerfile
poetry.lock
Вычисляем тэг базового образа:
TAG="$POETRY_HASH-$DOCKERFILE_HASH"
Пулим базовый образ:
docker pull awesome-base:de0b7dd2
Получилось?
Собираем и пушим базовый образ:
docker build ...
docker push awesome-base:de0b7dd2
Собираем образ с сервисом
awesome:<date>-<commit-hash>
на основе базового