【发布时间】:2021-12-03 08:08:34
【问题描述】:
我正在尝试构建 docker 映像并推送到 gitlab 注册表。
我正在使用 gitlab-shared runner。
npm install 没有问题,但是如何在下一个作业中构建 docker 镜像?
image: node:14.17.3
stages:
- install
- build
install_dependencies:
stage: install
tags:
- gitlab-org-docker
script:
- pwd
- npm install
build-job:
stage: build
image: docker
tags:
- gitlab-org-docker
script:
- echo "Compiling the code..."
- echo "build"
- docker build -t bmw-frontend-app .
- docker ps
我忘记了dind。 dind 表示 Docker 中的 Docker。
我成功如下。
image: docker:19.03.13
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- .next/
stages:
- build
services:
- docker:19.03.13-dind
build-job:
stage: build
before_script:
- echo docker login $DOCKER_REGISTRY --username $DOCKER_REGISTRY_USER --password-stdin
tags:
- gitlab-org-docker
script:
- echo "Compiling the code..."
- echo "build"
- docker build -t registry.gitlab.com/areum.lee1/bmwgs_frontend .
- docker login registry.gitlab.com -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASS
- docker push registry.gitlab.com/areum.lee1/bmwgs_frontend
- 我将外部图像修改为图像:docker:19.03.12
- 附加服务块。
【问题讨论】:
-
如果您提到
stage: install中的 node_modules 为stage: build,您可以尝试使用 cache (https://docs.gitlab.com/ee/ci/caching/)。我没有尝试过 dind 或 shared runner,但我认为它可以工作。
标签: gitlab gitlab-ci gitlab-runner