docker安装gitlib

为了安装方便,这里我们使用 Docker 安装 GitLab 中文版,通常会将 GitLab 的配置 (config) 、 日志 (logs) 、数据 (data) 放到容器之外, 便于日后升级:

  1. docker search gitlab
  2. docker pull gitlab/gitlab-ce
  3. docker run --detach \
  4. --hostname gitlab.jianf.top \
  5. --publish 10443:443 \
  6. --publish 10080:80 \
  7. --publish 10022:22 \
  8. --name gitlab \
  9. --restart always \
  10. --volume /opt/docker/gitlab/config:/etc/gitlab \
  11. --volume /opt/docker/gitlab/logs:/var/log/gitlab \
  12. --volume /opt/docker/gitlab/data:/var/opt/gitlab \
  13. docker.io/gitlab/gitlab-ce:latest

配置

按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb (宿主机路径:$HOME/gitlab/config/gitlab.rb), 配置http协议所使用的访问地址

  1. # 通过vim 来编辑相应的配置, $HOME是当前系统的根目录,根据自己的路径自行修改
  2. vim /opt/docker/gitlab/config/gitlab.rb
  3. # 配置http协议所使用的访问地址,不加端口号默认为80
  4. external_url='http://127.0.0.1:80'
  5. # 配置ssh协议所使用的访问地址和端口
  6. gitlab_rails['gitlab_ssh_host'] = 'http://127.0.0.1'
  7. gitlab_rails['gitlab_shell_ssh_port'] = 10022 # 此端口是run时22端口映射的10022端口
  8. :wq #保存配置文件并退出

由于定义的 url 中有端口号,需要将 nginx 监听的端口号改回 80,否则 nginx 将监听容器的 30000 端口,造成 GitLab 无法使用:

  1. nginx['listen_port'] = 80

配置 ssh 协议所使用的访问地址和端口

  1. gitlab_rails['gitlab_ssh_host'] = "localhost"
  2. gitlab_rails['gitlab_shell_ssh_port'] =10022

修改完之后重启gitlab

  1. # 每次修改gitlab 配置都需要重启
  2. docker restart gitlab

邮箱服务配置

主要用于gitlab 日常使用中邮件通知服务

  1. 1.修改配置文件,建议使用企业邮箱
  2. vim $HOME/gitlab/config/gitlab.rb
  3. # 开始邮箱服务
  4. gitlab_rails['smtp_enable'] = true
  5. # 设置邮箱smtp 服务, 根据自己/公司使用的邮箱协议自由设置即可
  6. gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
  7. # 设置邮箱smtp 服务端口
  8. gitlab_rails['smtp_port'] = 465
  9. # 设置发件人, 建设单独申请邮箱
  10. gitlab_rails['smtp_user_name'] = "getlab@xxx.com"
  11. # 设置登录邮箱密码
  12. gitlab_rails['smtp_password'] = "password"
  13. gitlab_rails['smtp_authentication'] = "login"
  14. gitlab_rails['smtp_enable_starttls_auto'] = true
  15. gitlab_rails['smtp_tls'] = true
  16. # gitlab发送人, 可以根据自己的需求自己定义
  17. gitlab_rails['gitlab_email_from'] = 'getlab'

账号密码

1 进入容器

docker exec -ti xxxx /bin/bash

2 进入gitlab的bin目录

cd /opt/gitlab/bin

3 执行gitlab-rails console

  1. root@gitlab:/opt/gitlab/bin# gitlab-rails console
  2. --------------------------------------------------------------------------------
  3. Ruby: ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]
  4. GitLab: 14.0.2 (bac4ee4a9e2) FOSS
  5. GitLab Shell: 13.19.0
  6. PostgreSQL: 12.6
  7. --------------------------------------------------------------------------------
  8. Loading production environment (Rails 6.1.3.2)
  9. irb(main):001:0>

4 找到root的用户,输入u=User.where(id:1).first,然后回车

  1. irb(main):001:0> u=User.where(id:1).first
  2. => #<User id:1 @root>

5 修改password,输入u.password=’12345678’,然后回车

  1. irb(main):002:0> u.password='12345678'
  2. => "12345678"

6 修改确认密码

  1. irb(main):004:0> u.password_confirmation='12345678'
  2. => "12345678"

7 保存修改,输入u.save,然后回车,等到输出true,这时,密码修改成功。

  1. irb(main):005:0> u.save
  2. Enqueued ActionMailer::MailDeliveryJob (Job ID: d4c64606-0597-46ae-a7b5-fa9bb01c2685) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", {:args=>[#<GlobalID:0x00007fe59ae70c98 @uri=#<URI::GID gid://gitlab/User/1>>]}
  3. => true

至此,密码修改成功,可以用12345678密码登录进去了

docker安装gitlib runner

yum 安装

  1. 1)、添加yum
  2. curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
  3. 2)、安装runner
  4. yum install gitlab-ci-multi-runner
  5. 3)、向GitLab-CI注册runner
  6. gitlab-ci-multi-runner register

docker安装

  1. sudo docker run -d --name gitlab-runner --restart always \
  2. -v /opt/docker/gitlab-runner/config:/etc/gitlab-runner \
  3. -v /var/run/docker.sock:/var/run/docker.sock \
  4. docker.io/gitlab/gitlab-runner:alpine

注册gitlab runner

  1. docker run --rm -v /opt/docker/gitlab-runner/config:/etc/gitlab-runner docker.io/gitlab/gitlab-runner:alpine register \
  2. --non-interactive \
  3. --executor "docker" \
  4. --docker-image alpine:latest \
  5. --url "http://192.168.75.95:10080/" \
  6. --registration-token "3yubq7JcvrYynNSznTEz" \
  7. --description "first-register-runner" \
  8. --tag-list "test-cicd,dockercicd" \
  9. --run-untagged="true" \
  10. --locked="false" \
  11. --access-level="not_protected"
  12. sudo docker run docker.io/gitlab/gitlab-runner:alpine register \
  13. --non-interactive \
  14. --executor "docker" \
  15. --docker-image alpine:latest \
  16. --url "http://192.168.75.95:10080/" \
  17. --registration-token "3yubq7JcvrYynNSznTEz" \
  18. --description "first-register-runner" \
  19. --tag-list "test-cicd,dockercicd" \
  20. --run-untagged="true" \
  21. --locked="false" \
  22. --access-level="not_protected"

docker exec -it gitlab-runner gitlab-runner register

配置密钥
输入命令,一直回车即可。
$ ssh-keygen -t rsa -C ‘1111111@qq.com’

Gitlab命令

重新应用gitlab的配置
gitlab-ctl reconfigure

重启gitlab服务
gitlab-ctl restart

查看gitlab运行状态
gitlab-ctl status

停止gitlab服务
gitlab-ctl stop

查看gitlab运行日志
gitlab-ctl tail

停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sideki

docker-compose安装gitlab

编写docker-compose-gitlab.yml

  1. version: '3.5'
  2. services:
  3. gitlab:
  4. image: gitlab/gitlab-ce:latest
  5. hostname: 192.168.75.95
  6. restart: unless-stopped
  7. environment:
  8. GITLAB_OMNIBUS_CONFIG: |
  9. gitlab_rails['gitlab_shell_ssh_port'] = 22
  10. ports:
  11. - "10080:80"
  12. - "10022:22"
  13. volumes:
  14. - ../gitlab/config/gitlab:/etc/gitlab
  15. - ../gitlab/data/gitlab:/var/opt/gitlab
  16. - ../gitlab/logs:/var/log/gitlab
  17. networks:
  18. - gitlab
  19. gitlab-runner:
  20. image: gitlab/gitlab-runner:alpine
  21. restart: unless-stopped
  22. depends_on:
  23. - gitlab
  24. privileged: true
  25. volumes:
  26. - ../gitlab/config/gitlab-runner:/etc/gitlab-runner
  27. - /var/run/docker.sock:/var/run/docker.sock
  28. - /bin/docker:/bin/docker
  29. networks:
  30. - gitlab
  31. networks:
  32. gitlab:

命令启动: docker-compose -f docker-compose-gitlab.yml -p gitlab up -d

参考:
https://docs.gitlab.com.cn/
https://hub.docker.com/r/beginor/gitlab-ce/