背景是根据之前公司的实际需求来完成的整个记录,部分内容废弃了(当时没有记录),仅供一些思路参考

1. 安装环境

1.1 安装docker和gitlab

  1. sudo apt-get install docker.io

docker下拉取gitlab镜像,由于环境较为庞大,一般要求计算机运行内存8g以上,运行效果较为良好

  1. sudo docker pull gitlab/gitlab-ce

运行gitlab,也就是创建gitlab容器

  1. sudo docker run --detach --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always \
  2. --volume /srv/gitlab/config:/etc/gitlab \
  3. --volume /srv/gitlab/logs:/var/log/gitlab \
  4. --volume /srv/gitlab/data:/var/opt/gitlab \
  5. gitlab/gitlab-ce:latest

参数解析:

  • —detach 后台运行
  • —publish 端口映射 443为https浏览端口,80也就是我们访问的ip地址的端口,默认为80,22是ssh端口
  • —restart always 设置自动重启
  • —volume 由于docker是虚拟环境,一般把数据映射到本地比较好,这样删除容器,影响不是很大(当然一般不建议,很容易出问题)冒号前的为宿主机的本地地址,后面为docker gitlab里的环境
  • 最后的为运行的镜像

后面实际部署过程中,由于出现了系列的问题,再没有备份的情况下删除了容器,再次创建容器时出现了问题,使用了下面的创建命令,解决(但不通用)

  1. sudo docker run --privileged -e GITLAB_SKIP_UNMIGRATED_DATA_CHECK=true --detach --publish 443:443 --publish 80:1000 --publish 222:22 --name gitlab --restart always \
  2. --volume /srv/gitlab/config:/etc/gitlab \
  3. --volume /srv/gitlab/logs:/var/log/gitlab \
  4. --volume /srv/gitlab/data:/var/opt/gitlab \
  5. gitlab/gitlab-ce:latest
  • —privileged 介绍说是给予比较高的权限,去执行数据的加载,以及环境的初始化
  • -e GITLAB_SKIP_UNMIGRATED_DATA_CHECK=true 不去对之前的未迁移的数据进行校验,没有这个的时候,一直加载了不了数据

如果没有配置域名解析的话,项目的url默认为docker的hostname,也就是一串字符,需要修改为ip地址,docker的配置文件一般在(/home/gitlab/config/gitlab.rb)

  1. vim /srv/gitlab/config/gitlab.rb # 如果提示没有权限,就赋予权限 chmod 777 /srv/gitlab/config/gitlab.rb
  2. # 配置http协议所使用的访问地址,不加端口号默认为80,ip地址为安装gitlab的主机ip 地址,通过 ip addr 可以看到
  3. external_url 'http://192.168.39.xxx'
  4. # 配置ssh协议所使用的访问地址和端口
  5. gitlab_rails['gitlab_ssh_host'] = '192.168.39.xxx'
  6. gitlab_rails['gitlab_shell_ssh_port'] = 22 # 此端口是run时22端口映射的22端口
  7. :wq #保存配置文件并退出
  8. # 需要重启gitlab,重新加载配置文件
  9. sudo docker restart gitlab
  10. sudo docker exec -it gitlab /bin/bash
  11. gitlab-ctl reconfigure
  12. gitlab-ctl restart
  13. # 新增,后面要求使用路由器公网映射到内网的ip,所以clone地址要改为公网的ip加端口号,经过一系列的操作,总是失败,后面折中方案为
  14. vim /srv/gitlab/data/gitlab-rails/etc/gitlab.yml
  15. 但是修改后只能直接 gitlab-ctl restart
  16. 不可直接gitlab-ctl reconfigure,不然配置的数据会被覆盖,目前没有解决方案

其他命令

  1. sudo docker container ls -a # 列举运行中的容器
  2. sudo docker logs -f gitlab # 实时查看gitlab容器的执行日志
  3. sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password # 查看root账号初始密码

1.2 安装gitlab -runner

  1. sudo docker pull gitlab/gitlab-runner

运行gitlab-runner

  1. sudo docker run -d --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest

注册(也就是将gitlab和gitlab-runner联系起来)

  1. docker run --rm -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
  2. --non-interactive \
  3. --executor "docker" \
  4. --docker-image alpine:latest \
  5. --url "http://192.168.39.xxx/" \
  6. --registration-token "VtUo3W95QsTqM5ndb2uy" \
  7. --description "airm2m-ci/cd" \
  8. --tag-list "ci/cd" \
  9. --run-untagged="true" \
  10. --locked="false" \
  11. --access-level="not_protected"