Docker + Gitlab + Gitlab runner搭建

  • 没钱卖服务器只能用wsl2 的ubuntu环境搭个gitlab + gitlab runner执行CI CD玩玩。。
  • 坑有点多 = =

搭建前准备

Docker 下载

# 准备
sudo apt remove docker docker-engine docker.io
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update

#安装
sudo apt install docker-ce

#启动
sudo service docker start

  • docker下载完成后可输入docker 检查docker是否启动成功

拉取,部署 Gitlab

  • 使用Docker 拉取Gitlab镜像
sudo docker pull gitlab/gitlab-ce:latest
  • 启动Gitlab:
sudo docker run --detach \
--hostname wsl2中ifconfig的ip地址\
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /home/vincentvan/gitlab/config:/etc/gitlab \
--volume /home/vincentvan/gitlab/logs:/var/log/gitlab \
--volume /home/vincentvan/gitlab/data:/var/opt/gitlab \
-m 3g \
gitlab/gitlab-ce:latest

#例如:
sudo docker run --detach --hostname $hostip --publish 443:443 --publish 9000:80 --publish 22:22 --name gitlab1 --restart always --volume /home/test/gitlab/config:/etc/gitlab --volume /home/test/gitlab/logs:/var/log/gitlab --volume /home/test/gitlab/data:/var/opt/gitlab -m 3g gitlab/gitlab-ce:latest

## **注意** hostname 为wsl2中ifconfig的ip地址,user换成自己ubuntu系统的用户名称如 vincentvan,wsl2修改端口后好像会出问题,暂时用的原80端口

##参数解释--detach: 设置容器后台运行
##--hostname: 设置容器的 hostname
##--publish: 端口转发规则(80:Http 访问端口,443:Https 访问端口,8888:主机的 ssh 访问端口,22:Docker 容器中 ssh 访问端口)
##--name:容器名称
##--restart always:每次启动容器就重启GitLab
##--volume: 共享目录挂载,即 docker 容器内外数据共享(/srv/gitlab/data: 应用程序数据,/srv/gitlab/logs:GitLab 的 log,/srv/gitlab/config:GitLab 的配置文件)
  • 非常非常非常重要的一步!!!!!!!!!!!:Window 与 Linux 网络打通

    • 由于Gitlab部署在WSL2下的Ubuntu本地系统中,想要在Windows中访问该资源需要此步骤:

      #ip 为 刚才写的 ip地址,请替换如 127.0.0.1
      netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=9000 connectaddress=ip

    • 此时输入ip 地址即可访问,因为部署端口为80,因此可以不用输端口号,http默认端口为80

    • 第一次访问是需要使用root账号登录,此时需要重置一下root密码:

      #gitlab为一开始设置的容器别名,也可以使用容器id
      #进入容器
      docker exec -it gitlab bash
      #启动Rails控制台
      gitlab-rails console -e production
      #等待执行完,会进入输入模式
      #获取用户,设置密码
      #第一个默认为root
      user = User.where(id: 1).first

      #必须同时更改密码和password_confirmation才能使其正常工作
      user.password = '新的密码'
      user.password_confirmation = '新的密码'

      #保存,稍等一会就会执行刚才输入的代码
      user.save!
      exit
      #退出容器
      • 使用该root账户进入gitlab