Я устанавливаю GitLab runner на EC2, который запускает задания в кластере Fargate ECS. Я следовал этому руководству шаг за шагом: https://docs.gitlab.com/runner/configuration/runner_autoscale_aws_fargate
Во время моего CI/CD я создаю образ докера, а затем хочу повторно использовать его на других этапах моего CI/CD. Поэтому, когда я использовал общий бегун, я использовал docker dind:
image: docker:stable
services:
- docker:dind
Мой config.toml
выглядит так:
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "fargate-runner"
url = "https://gitlab.com/"
token = "KRGVsYCF-V-D1u7UvCjq"
executor = "custom"
builds_dir = "/opt/gitlab-runner/builds"
cache_dir = "/opt/gitlab-runner/cache"
[runners.custom]
config_exec = "/opt/gitlab-runner/fargate"
config_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "config"]
prepare_exec = "/opt/gitlab-runner/fargate"
prepare_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "prepare"]
run_exec = "/opt/gitlab-runner/fargate"
run_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "run"]
cleanup_exec = "/opt/gitlab-runner/fargate"
cleanup_args = ["--config", "/etc/gitlab-runner/fargate.toml", "custom", "cleanup"]
Что мне нужно сделать, чтобы использовать команду docker во время CI/CD и сохранить образ docker для каждой сборки между всеми этапами?
Я тоже об этом думал. Чтобы использовать сохранение/загрузку докера, должен ли я использовать docker dind или просто установить докер в моем образе Debian, который я использую в ECS для каждого задания?
Вам, вероятно, не нужен dind, так как ваш базовый образ docker:stable, но я не помню, когда dind полезен.
docker:dind
требует привилегированного выполнения. На Fargate нельзя использовать привилегированные контейнеры, поэтому это невозможно напрямую.
Однако вы можете использовать сборщики образов без демонов, такие как канико, для создания образов докеров и, при необходимости, использовать эти образы в качестве образа сборки для последующих заданий.
Вы также можете изучить альтернативы, такие как с помощью CodeBuild, для создания образов с исполнителем fargate.
Спасибо, я посмотрю, какой из них лучше для меня между kaniko и CodeBuild
Я не думаю, что это возможно, поскольку изображение будет храниться локально, а затем уничтожаться на этом этапе. Одним из вариантов может быть использование сохранения/загрузки докера для экспорта изображения в виде артефакта или кэшированной папки.