服务器git的使用技巧

gitlab与docker的集成

2018-06-27  本文已影响254人  GoddyWu

gitlab 是非常好的代码管理工具,支持私有化部署。现在代码交付都以docker镜像的标准,那么两者如何结合起来呢、?当然官方有很多方式,建议详细阅读此文章的参考文档部分。

⚠️注意:因为代码库中包含楼主的个人信息,所有暂不开放。但是所有代码都会在此文章展示。

使用工具

思路

1).gitlab-ci.yml
这个是gitlab官方的CI/CD文件,我们将会使用它实现代码的打包和docker镜像的打包操作。
2)阿里云
本来吧,楼主打算私有部署能外网访问的docker registry,然而没钱养不起云主机公网ip,官方的仓库访问速度、上传速度啥的又很慢,穷途末路之际发现了阿里云有免费的容器镜像服务,开心😄地址是:https://cr.console.aliyun.com 阿里云的仓库本身支持自动生成docker image,详见方法1。

实操

注意,只有方法一强依赖阿里云的仓库,方法二和方法三本质不需要,任何镜像仓库都可以。

方法一:(阿里云驱动)

1)创建gitlab代码仓库,示例:https://gitlab.com/goddy-test/docker-ali-nginx
2)在代码仓库添加Dockerfile文件,示例:

FROM hub.c.163.com/library/nginx

COPY html /usr/share/nginx/html
3)打开阿里云仓库,创建镜像仓库

此时我们发现缺少一个gitlab私有token

4)创建gitlab token
5)配置相关内容,就可以使用啦

方法二:(gitlab驱动)

此方法核心使用的是docker-in-docker的镜像
1)创建阿里的镜像仓库


创建完即可查看仓库地址
2)编辑项目代码
这里楼主使用一个简单的python项目,文件如下:
#test.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def test():
    return 'hello world, 王聪明!'

@app.route('/h/<username>')
def hello(username):
    return 'Hello ' + username + '!'

if __name__ == '__main__':
    app.run(host="0.0.0.0", debug=True)

3)创建Dockerfile

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
CMD ["python", "test.py"]

4)配置.gitlab-ci.yaml文件

variables:
  image: "registry.cn-hangzhou.aliyuncs.com/goddy-test/gitlab-ci-test"
  tag: $CI_COMMIT_SHA

stages:
  - build
  - deploy

docker-build:
  stage: build
  image: docker:stable
  services:
    - docker:dind
  only:
    - master
    - dev
  script:
    - docker login registry.cn-hangzhou.aliyuncs.com -u *** -p ***
    - docker build -t $image:$tag .
    - docker push $image:$tag
    - echo "$image:$tag"
注意tag取得是CI_COMMIT_SHA,也可以使用其他变量。(项目展示的只是前8位,点击copy才是全部的)

5)其他变量

然后就push到gitlab repository里就ok了。

方法三:(非私有化部署)

如果你是用的非私有化部署的gitlab,即使用的gitlab.com。那么可以存储至gitlab官方提供的Docker Container Registry.

1)打开项目Registry
2)登陆并上传 (自定义tag)
$ docker login registry.gitlab.com
$ docker build -t registry.gitlab.com/goddy-test/gitlab-ci-test:tag .
$ docker push registry.gitlab.com/goddy-test/gitlab-ci-test:tag

参考文档

上一篇下一篇

猜你喜欢

热点阅读