有没有办法在 dockerfiles 中使用容器注册表图像?

时间:2021-07-12 14:25:21

标签: docker gitlab dockerfile gitlab-ci

我目前正在尝试在 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

无法构建映像,因为清单未知。

这样做的最佳方法是什么?在构建镜像之前在工作中拉取镜像对我来说感觉不合适。

谢谢

1 个答案:

答案 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 将成为新镜像的名称

相关问题