1. GitLab Docker 镜像库配置

//开启 docker 存储库

  1. $ vim /etc/gitlab/gitlab.rb
  2. ...
  3. registry_external_url 'https://gitlabtest.xiodi.cn:4567'
  4. ...
  5. registry_nginx['enable'] = true
  6. registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/1_gitlabtest.xiodi.cn_bundle.crt"
  7. registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/2_gitlabtest.xiodi.cn.key"
  8. ...

//更改存储库路径,默认为 /var/opt/gitlab/gitlab-rails/shared/registry

  1. gitlab_rails['registry_path'] = "/path/to/registry/storage"

//存储库路径支持 s3 存储

  1. registry['storage'] = {
  2. 's3' => {
  3. 'accesskey' => 's3-access-key',
  4. 'secretkey' => 's3-secret-key-for-access-key',
  5. 'bucket' => 'your-s3-bucket',
  6. 'region' => 'your-s3-region',
  7. 'regionendpoint' => 'your-s3-regionendpoint'
  8. }
  9. }

更多存储参考:https://docs.gitlab.com/12.8/ee/administration/packages/container_registry.html#container-registry-storage-driver

//重启服务后,gitlab 页面如下
6.2 gitlab 私有镜像库和 Docker构建 - 图1

2. Docker 构建

由于 docker-in-docker 需要 privileged,所以要修改 runner。

  1. $ vim /data/etc/gitlab-runner/config.toml
  2. ...
  3. [runners.docker]
  4. tls_verify = false
  5. image = "harbor.xiodi.cn/tools/alpine:3.11"
  6. privileged = true
  7. ...
  8. $ docker restart gitlab-runner2

需要先把前面测试的 CI_REGISTRY 变量去掉。

//.gitlab.ci.yml

  1. variables:
  2. REGISTRY: $CI_REGISTRY/edu-java-demo/edu-java-spring
  3. MAVEN_OPTS: "-Dmaven.repo.local=.m2"
  4. stages:
  5. - test
  6. - build
  7. - package
  8. test:
  9. stage: test
  10. image: harbor.xiodi.cn/tools/openjdk:11.0.6
  11. tags:
  12. - docker
  13. - host20133-docker
  14. script:
  15. - chmod +x ./mvnw && ./mvnw test
  16. cache:
  17. key: maven-repo-cache
  18. paths:
  19. - .m2
  20. build:
  21. stage: build
  22. image: harbor.xiodi.cn/tools/openjdk:11.0.6
  23. tags:
  24. - docker
  25. - host20133-docker
  26. script:
  27. - chmod +x ./mvnw && ./mvnw package
  28. cache:
  29. key: maven-repo-cache
  30. paths:
  31. - .m2
  32. artifacts:
  33. paths:
  34. - target/*.jar
  35. expire_in: 1 week
  36. docker-package:
  37. stage: package
  38. image: harbor.xiodi.cn/tools/docker:18.09.9
  39. services:
  40. - docker:18.09-dind
  41. tags:
  42. - docker
  43. - host20133-docker
  44. variables:
  45. REGISTRY_VERSION: $CI_COMMIT_SHORT_SHA
  46. script:
  47. - export
  48. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  49. - docker build -t $REGISTRY:$CI_COMMIT_SHORT_SHA -f Dockerfile .
  50. - docker push $REGISTRY:$CI_COMMIT_SHORT_SHA

3. Docker 镜像查看

6.2 gitlab 私有镜像库和 Docker构建 - 图2