Docker 安装与配置 Gitlab

726 阅读4分钟

Installl

mkdir -p /data/gitlab/config
mkdir -p /data/gitlab/logs
mkdir -p /data/gitlab/data

docker run -d \
-h <host> \
-p 443:443 -p <port>:80 -p 2222:22 \
-e TZ=Asia/Shanghai \
--shm-size 256m \
--name gitlab \
--restart always \
-v /data/gitlab/config:/etc/gitlab \
-v /data/gitlab/logs:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

配置

修改配置文件

vi /data/gitlab/config/gitlab.rb

基本配置

external_url 'http://192.168.0.152'
gitlab_rails['gitlab_ssh_host'] = '192.168.0.152'
gitlab_rails['gitlab_shell_ssh_port'] = 2222

修改HTTP端口

如果单独设置了端口,非80端

修改gitlab配置

vi /data/gitlab/config/gitlab.rb

external_url 'http://192.168.0.152:PROT'
nginx['listen_port'] = PROT

修改docker配置

如果Docker容器已经启动80端口,则更改Docker容器配置 参考 [[修改容器端口]]

把80端口改成你自己端口

修改nginx配置

此方法为临时方法,gitlab重新读取配置文件后失效

gitlab.yml文件的port改成你想设置的端口

vi /data/gitlab/data/gitlab-rails/etc/gitlab.yml

配置邮箱服务

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
//不行就尝试 gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xiconz@qq.com"
gitlab_rails['smtp_password'] = "cbkdgrnopljpjdichc" // 授权码
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_pool'] = true
gitlab_rails['gitlab_email_from'] = 'xiconz@qq.com'
user['git_user_email'] ="xiconz@qq.com"

测试邮件发送

语法:

Notify.test_email('exam@163.com','邮件标题','邮件内容').deliver_now

进入控制台发送测试邮件

gitlab-rails console
Notify.test_email('exam@163.com','邮件标题','邮件内容').deliver_now

配置SSH密钥

检查密钥是否存在

ls -alh ~/.ssh

不存在生成密钥:

ssh-keygen -t rsa -C "gitlab" -f ~/.ssh/gitlab_rsa

添加私钥到本机SSH

添加私钥,指向私钥文件

ssh-add ~/.ssh/gitlab_rsa

失败使用:

ssh-agent bash

检查添加成功

ssh-add -l

验证是否可以连接

ssh -T git@192.168.0.152 -p 2222

大写-T 指向主机 小写-p指向端口 选择-i指向密钥文件 -i ~/.ssh/gitlabpullweb_rsa

成功提示: Welcome to GitLab, @wangbin!

查看密码

如果忘记密码或者非手动修改密码时这个密码才有效

账号: root

sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

常用指令

需要进入gitlab容器执行操作

  • gitlab-ctl diff-config: 比较配置
  • gitlab-ctl reconfigure: 加载配置
  • gitlab-ctl restart: 重启
  • gitlab-ctl status: 查看状态

[可选]Gitlab-Runner

  1. 安装gitlab-runner 参考
mkdir -p /data/gitlab-runner5/config

docker run \
-d \
--name gitlab-runner \
--restart always \
-v /data/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
  1. 注册CICD通道 参考 /data/gitlab-runner/confi替换为你的gitlab-runner/config配置文件路径
docker run \
-it \
-v /data/gitlab-runner/config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest register

或者:

gitlab-runner register \
--non-interactive \
--executor "docker" \
--docker-image "golang:alpine" \
--url "http://192.168.8.10/" \
--registration-token "bTYW9wdU_M9nv1Kx_4Vi" \
--description "node-runner" \
--tag-list "docker,golang" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"

注册分为8步骤:

  1. Enter your GitLab instance URL (also known as the gitlab-ci coordinator URL).
  2. Enter the token you obtained to register the runner.
  3. Enter a description for the runner. You can change this value later in the GitLab user interface.
  4. Enter the tags associated with the runner, separated by commas. You can change this value later in the GitLab user interface.
  5. Enter any optional maintenance note for the runner.
  6. Provide the runner executor. For most use cases, enter docker.
  7. If you entered docker as your executor, you are asked for the default image to be used for projects that do not define one in .gitlab-ci.yml

注册参考以下通用输入 ![[Pasted image 20230223195837.png]]

  1. 查看是否生成配置文件
cat /data/gitlab-runner/config/config.toml
  1. 重启读取配置文件
docker restart gitlab-runner
  1. 查看运行状态
docker logs gitlab-runner

遇到登录问题需要修改配置文件

  image: docker:stable  
  stage: build  
  script:  
    # 这里的变量会自动获取你当前推送代码的gitlab用户和密码以及仓库地址  
    - docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY  
    # 这里的变量就是我们全局配置定义的了  
    - docker build -t $IMAGE_FULL_NAME .  
    - docker push $IMAGE_FULL_NAME  
    - rm -rf target  
    - docker rmi $IMAGE_FULL_NAME  
  only:  
    - master  
  tags:  
    - test

gitlab界面查看是否有这个CICD通道. 项目 -> 设置 -> CI/CD-> Runner -> 分配项目的 runner 是否与你注册时输入的步骤相关 ![[Pasted image 20230223154159.png]]

.gitlab-ci.yml 文档

命令修改root密码

#执行命令
gitlab-rails console -e production

显示内容
--------------------------------------------------------------------------------
 Ruby:         ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux]
 GitLab:       14.6.1 (661d663ab2b) FOSS
 GitLab Shell: 13.22.1
 PostgreSQL:   12.7
 --------------------------------------------------------------------------------
Loading production environment (Rails 6.1.4.1)
 # gitlab-rails console -e production      # 然后以此执行下面命令(需要提前查询用户的id号)
...> user = User.where(id: 1).first
...> user.password = 'root123*'
...> user.password_confirmation = 'root123*'
...> user.save!
例如,重置root用户密码为root123*,root用户id为1# gitlab-rails console -e production

irb(main):001:0> user = User.where(id: 1).first
=> #<User id:1 @root>
irb(main):002:0> user.password = 'root123*'
=> "root123*"
irb(main):003:0> user.password_confirmation = 'root123*'
=> "root123*"
irb(main):004:0> user.save!
Enqueued ActionMailer::DeliveryJob (Job ID: e562694d-2a1b-4bad-843b-d8567ac51077) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", #<GlobalID:0x00007fae7e55bcc8 @uri=#<URI::GID gid://gitlab/User/1>>
=> true
irb(main):005:0> quit