我目前正在尝试在 Gitlab CI 中构建 docker 镜像。在这里,我尝试使用 Gitlab 容器注册表中的映像来构建映像。
FROM <CI_REGISTRY>/<CI_PROJECT_ROOT_NAMESPACE>/<CI_PROJECT_NAME>/<image_name>
RUN echo 'hello world'
执行方式
test:
stage: build
image: docker
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- docker build --pull -t $CI_REGISTRY_IMAGE/test:latest .
- docker push $CI_REGISTRY_IMAGE/test:latest
无法构建映像,因为清单未知。
这样做的最佳方法是什么?在构建镜像之前在工作中拉取镜像对我来说感觉不合适。
谢谢
答案 0 :(得分:0)
我想你可能会读到这个: https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
那么你的 docker 文件可能会像这样开始:
ARG CI_REGISTRY_IMAGE_FULL_NAME
FROM ${CI_REGISTRY_IMAGE_FULL_NAME}
那么您对 docker build 的调用可能如下所示:
script:
- > docker build --pull
--build-arg CI_REGISTRY_IMAGE_FULL_NAME=$CI_REGISTRY_IMAGE_FULL_NAME
-t $CI_REGISTRY_IMAGE/test:latest .
不要将 CI_REGISTRY_IMAGE_FULL_NAME 与基础镜像的名称混淆,$CI_REGISTRY_IMAGE/test:latest 将成为新镜像的名称