【Docker实战】云端代码管理新体验,华为云Flexus X实例上GitLab部署与使用的实战指南
前言
华为云Flexus X云服务器
携手GitLab,为开发者和企业带来了云端部署的全新选择。Flexus X实例
以其灵活高效的柔性算力,结合GitLab强大的版本控制、CI/CD等功能,为企业打造高效、安全的研发环境。
链接直达:华为云Flexus云服务器X实例
gitlab介绍
GitLab
是一个开源的一体化 DevOps 平台,具有代码托管、代码审查、持续集成与持续部署(CI/CD)、问题跟踪、Wiki 和文档管理以及安全与权限管理等功能。它提供安全可靠的代码存储仓库,支持强大的分支管理和标签功能;允许团队成员进行代码审查和评论,跟踪代码变更历史;内置 CI/CD 工具,可定义各种任务阶段;用于记录和跟踪问题、缺陷和任务,并支持分配、设置优先级和截止日期等;允许创建和维护项目文档和 Wiki 页面;提供细粒度的权限控制和多种身份验证方式,还具有安全审计功能。总之,GitLab 能帮助团队提高代码质量,实现高效的协作和项目管理。
环境规划
操作系统 | git | gitlab | docker | docker-compose | 连接方式 |
---|---|---|---|---|---|
Huawei Cloud EulerOS 2.0 | 2.33.0 | gitlab/gitlab-ce | 27.1.1 | 2.29.1 | 本地==shell== |
部署流程
拉取镜像
[root@flexusx-251f ~]# docker pull gitlab/gitlab-ce
Using default tag: latest
latest: Pulling from gitlab/gitlab-ce
857cc8cb19c0: Pull complete
2abc51628ee2: Pull complete
a098af47633d: Pull complete
79eb1bbe5e7f: Pull complete
45c3937be5ff: Pull complete
052407fbe787: Pull complete
a57c8c923e60: Pull complete
65ef322a34d3: Pull complete
807b20aca09b: Pull complete
Digest: sha256:9e0d464e7c5fc03e29af190802708fd9270136ef0c423dba8ee7ad1f8480ea48
Status: Downloaded newer image for gitlab/gitlab-ce:latest
docker.io/gitlab/gitlab-ce:latest
创建容器
3001
做管理页面端口,3002
做ssh端口,拉去项目代码使用
[root@flexusx-251f ~]# mkdir -p /gitlab/etc
[root@flexusx-251f ~]# mkdir -p /gitlab/opt
[root@flexusx-251f ~]# mkdir -p /gitlab/log
[root@flexusx-251f ~]# docker run -itd \
> -p 3001:80 \
> -p 3002:22 \
> -v /gitlab/etc:/etc/gitlab \
> -v /gitlab/log:/var/log/gitlab \
> -v /gitlab/opt:/var/opt/gitlab \
> --restart always \
> --privileged=true \
> --name gitlab \
> gitlab/gitlab-ce:latest
ad00474916beb674b2bd3da2e29018d739247252bd5f1612d94c711a4729f5a1
查看容器运行状态
[root@flexusx-251f ~]# docker ps | grep git
ad00474916be gitlab/gitlab-ce:latest "/assets/wrapper" 7 seconds ago Up 6 seconds (health: starting) 443/tcp, 0.0.0.0:3002->22/tcp, :::3002->22/tcp, 0.0.0.0:3001->80/tcp, :::3001->80/tcp gitlab
修改配置文件
docker安装gitlab,创建项目时,默认项目URL访问地址显示的是容器主机地址(容器id),所以我们需要修改为一个固定可以外部访问的地址及宿主机地址,这样才可以进行pull/push代码
[root@flexusx-251f ~]# vim /gitlab/etc/gitlab.rb
# 大概在32行,取消external_url注释,地址为宿主机地址,不需要设置端口
32 # external_url 'GENERATED_EXTERNAL_URL'
33 external_url 'http://123.249.27.118'
# 大概在69行,修改为ssh主机ip
67 # gitlab_rails['gitlab_ssh_host'] = 'ssh.host_example.com'
68 gitlab_rails['gitlab_ssh_host'] = '123.249.27.118'
# 大概在700行,修改ssh连接端口
700 # gitlab_rails['gitlab_shell_ssh_port'] = 22
701 gitlab_rails['gitlab_shell_ssh_port'] = 3002
# 重新启动容器
[root@flexusx-251f ~]# docker restart gitlab
测试访问
配置安全组,放行端口号:
3001,3002
浏览器地址栏输入:
http://主机IP:3001
查看root密码
用户名
root
用户进行登录
# 查看root密码
[root@flexusx-251f ~]# docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
Password: d8CuKk5ULxD8sVPS8dT8Z3C5/rGEXDsQNkMiJAoK2C8=
也可以进行
root密码
修改再进行登录
[root@flexusx-251f ~]# docker exec -it gitlab /bin/bash
root@ad00474916be:/# gitlab-rails console -e production
--------------------------------------------------------------------------------
Ruby: ruby 3.1.5p253 (2024-04-023 revision 1945f8dc0e) [x86_64-linux]
GitLab: 17.3.2 (951fd632abf) FOSS
GitLab Shell: 14.38.0
PostgreSQL: 14.11
------------------------------------------------------------[ booted in 21.74s ]
Loading production environment (Rails 7.0.8.4)
irb(main):001:0> user = User.where(id:1).first
=> #<User id:1 @root>
irb(main):002:0> user.password='abc123456'
=> "abc123456"
irb(main):003:0> user.save!
输入
用户名和密码
进行登录
登录成功
基本使用
注册账号
输入姓名,用户名密码等信息,点击注册
在
root
账户进行授权
进行登录
登陆成功
配置关闭注册账号功能
gitlab
默认是开放注册账号功能的,在企业里面使用是不允许的,用户的账号是通过管理员创建出来的- 进入配置页面,取消勾选
sign-up enabled
创建项目
点击左侧导航栏
projects
,点击create a project
点击
create blank project
,创建一个空项目
自定义项目名称(project name),选择组或者命名空间,能见度生产环境一般为私有的,我们在这也选择
private
,之后点击create project
创建项目成功
创建用户
点击左下角设置admin,选择
new user
输入用户名、邮箱信息
创建成功,点击
edit
进行编辑设置密码
输入完成,点击
save changes
邀请用户
将用户加入到项目中来,进入项目,点击左侧导航栏
Manage
,点击二级菜单Members
,之后点击右上角invite members
选择用户,选择角色,并设置过期时间,之后点击
invite
添加成功
wangwu用户登录进行测试,首次登入需要修改密码
在该用户可以看到之前创建的项目,已经有了对应的权限
拉取项目
配置git
在华为云实例上安装git
[root@flexusx-251f ~]# yum install -y git
git客户端要连接仓库,就要先生成ssh key,ssh key有公钥和私钥,生成后把公钥填到git站点上,现在生成ssh key
设置用户名
admin01
为自己的用户名,可以随便填,注意提交记录的时候会显示这个用户名
[root@flexusx-251f ~]# git config --global user.name 'admin01'
设置邮箱
- 这个邮箱也是可以随便填,一般填员公在公司的邮箱
[root@flexusx-251f ~]# git config --global user.email 'admin01@qq.com'
生成
ssh key
- 输入命令之后,一直默认回车即可
[root@flexusx-251f ~]# ssh-keygen -t rsa -C "admin01@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:dYROjGaOek4RJcFLmlau+NkmX9MXe7wDUh4QQk2GP1M admin01@qq.com
The key's randomart image is:
+---[RSA 3072]----+
| .o++*+o. |
| =.=o*.E |
| * B +.o. |
| + = ..=.o |
| o o .S =.. |
| . o o .. o+ |
| . * o ..o.o |
| + +. . . ... |
| +. .. |
+----[SHA256]-----+
[root@flexusx-251f ~]# cd /root/.ssh/
[root@flexusx-251f .ssh]# ls
authorized_keys id_ed25519 id_ed25519.pub id_rsa id_rsa.pub
把生成的公钥填写在
gitlab
的wangwu
用户中
查看公钥并写入
key
中
[root@flexusx-251f .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDHHXiSuHbfab8EzQ0B6zTOPNPF5HyISXh8Ldl5u5mNAx17M9ib7C36EHFxNtYnVSNbnn2cIeP6hOXXfNhDmGgg9PGHzAzuXj8rOBegEeY9F1Lg2NF1zbnnmiwzKmgkBukicQuQlqcn1m3L6pA4V9eIj7WDrUt2sHjyhaPLb3AktxYR44PvN2aaOmAZQhv858gePGFJnbmYVVK6nIDa+xEm/kas/wIQoSvYQfeyPTWpCB6M1y6lqpkmdBciv57PYBd9s2vJD/Guf77BSNHM2dFNt/IB/P+bo2pu/r0qoRyb7HtIfM4igUlYuu+G5Q8LshemnSd5kCm9SOKaJJ99ovabwyWSA5PjGFr5guDMRx7UA/+4NKboMjlKbIrhRkkcaINp9UK97s7LBZWs/a+A9GExz9EWtyIIXpzyEquLov1T1LlmYTsaip/c7bIalkfn4Q6sxNk3hSsnujYlS5Q5nAkv06AO9Hu2SNHyLiSGcmWg9yYZOsOHZz/8MCVFIx0Wc2s= admin01@qq.com
克隆项目
找到项目的
ssh
地址,也可以通过http
地址
创建文件夹并拉取文件
[root@flexusx-251f ~]# mkdir code
[root@flexusx-251f ~]# cd code/
[root@flexusx-251f code]# git clone ssh://git@123.249.27.118:3002/root/my_java_project01.git
Cloning into 'my_java_project01'...
The authenticity of host '[123.249.27.118]:3002 ([123.249.27.118]:3002)' can't be established.
ED25519 key fingerprint is SHA256:L0vK441j2nwCcNuZegnkiAcWe2TIjjGLJrLOE7GzAEQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[123.249.27.118]:3002' (ED25519) to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (3/3), done.
# 克隆成功
[root@flexusx-251f code]# ls
my_java_project01
提交文件
创建一个新文件,并写内容
[root@flexusx-251f code]# cd my_java_project01/
[root@flexusx-251f my_java_project01]# ls
README.md
[root@flexusx-251f my_java_project01]# echo 11111 > 1.txt
[root@flexusx-251f my_java_project01]# cat 1.txt
11111
将文件添加到暂存区
[root@flexusx-251f my_java_project01]# git add *
[root@flexusx-251f my_java_project01]# git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: 1.txt
提交文件到本地仓库
[root@flexusx-251f my_java_project01]# git commit -m '提交一个文档'
[main 6512959] 提交一个文档
1 file changed, 1 insertion(+)
create mode 100644 1.txt
通过root用户,修改wangwu用户角色,因为开发人员不可进行提交,只能查看master分支
推送代码到项目
[root@flexusx-251f my_java_project01]# git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 290 bytes | 290.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://123.249.27.118:3002/root/my_java_project01.git
42ac110..6512959 main -> main
这里把本地仓库同步到远程仓库,到远程仓库看一下就能看到提交记录了
体验和感受
在追求高效协作与持续创新的数字化时代,GitLab
作为领先的DevOps平台,为企业提供了从代码托管到CI/CD的一站式解决方案。而今,华为云Flexus X服务器
的出现,更是为GitLab
的云端部署开启了新篇章。
华为云Flexus X实例
以其卓越的算力性能、灵活的扩展能力和稳定可靠的服务质量,成为了GitLab
云端部署的理想选择。它不仅支持高并发访问,确保团队协作的流畅无阻,还通过智能的资源调度,帮助企业优化成本结构,实现资源的最大化利用。
- 点赞
- 收藏
- 关注作者
评论(0)