【Gitlab】配置、运行Gitlab容器实例及简单使用测试
其实,回过头来看,Gitlab的配置、安装和运行并不是难,问题是官方的文档坑!官方的文档坑!官方的文档坑!重要的话说三遍,和前一段时间我研究Harbor-CE配置离线漏洞数据库的情况非常的相似,都是因为官方文档,导致走了很多的弯路。开源的软件貌似都存在一定的尿性!OK!吐槽完了,上实操……# 默认下载的镜像就是latest$ docker pull gitlab/gitlab-ce# 创建Gitl
其实,回过头来看,Gitlab的配置、安装和运行并不是难,主要是在root用户密码如何获取的问题上花了很多时间,走了很多的弯路。
# 默认下载的镜像就是latest
$ docker pull gitlab/gitlab-ce
# 创建Gitlab镜像挂载到本地的三个重要目录
$ mkdir -p /data/gitlab/config /data/gitlab/logs /data/gitlab/data
# 创建gitlab-net网络
$ docker network create gitlab-net
##########################################################################
# 80是http协议访问端口,本地和容器都是80;
# 443是https协议访问端口,本地10443,容器443;
# 22是SSH请求的端口,本地10022,容器22;
# 映射的目录分别是配置、日志和数据;
# env是启动的时候初始化给容器的参数
##########################################################################
$ docker run -d \
--hostname 192.168.223.201 \
-p 80:80 \
-p 10443:443 \
-p 10022:22 \
--name gitlab-ce \
--restart unless-stopped \
-v /data/gitlab/config:/etc/gitlab \
-v /data/gitlab/logs:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
-v /etc/localtime:/etc/localtime \
--network gitlab-net \
--env GITLAB_OMNIBUS_CONFIG="external_url='http://192.168.223.201'; gitlab_rails['gitlab_ssh_host'] = '192.168.223.201'; gitlab_rails['gitlab_shell_ssh_port'] = 10022" \
--env TZ=Asia/Shanghai \
gitlab/gitlab-ce:latest
启动需要一段时间,具体时长没做记录,大概需要几分钟才能完全启动起来。启动成功后,我们可以通过服务器IP+80端口来(http://192.168.223.201/)访问到Gitlab的登陆页,默认使用http协议,当然也可以通过为nginx创建证书来启用https协议。
下面最头疼的事情来了,据我在网上查阅到的资料,无一例外的说,首次访问登陆页面时,会提示设置root用户密码,而我这个登陆界面上并没有这样的提示,然后我就凌乱了(后来发现这与Gitlab官方文档总是跳转到企业版的docs有很大的关系)。
秀一波魔怔操作:
1)注册个新用户?OK!但是注册新用户后,登陆时会出现下面的提示:用户被Blocked。
Your account is pending approval from your GitLab administrator and hence blocked. Please contact your GitLab administrator if you think this is an error.
2)难道要注册个root用户?OK!注册root用户时,提示用户已经存在。
3)难道要给root用户配置一个初始化密码?OK!配置了初始化密码后,重启,使用root用户,以及初始化密码登陆,依旧无法成功登录。
在挂载出来的配置文件目录下(即/data/gitlab/config),有一个gitlab.rb配置文件, 里面有一个被注释的字段,修改后重启gitlab-ce容器实例。
# gitlab_rails['initial_root_password'] = "password"
修改为:
gitlab_rails['initial_root_password'] = "Gitlab12345"
4)最后在研究 gitlab.rb 配置文件里面的配置项时,发现其中有一个配置项,该配置项显示root用户密码在启动时会记录到容器里面一个叫initial_root_password的文件里面,而我之前已经把这个/etc/gitlab的目录已经挂载出来。那么就去这个目录下面看看吧,看看有没有这个文件。不出所料文件的确存在,而且这个文件里面记录了一个加密的密码,而且从NOTE说明来看,这个文件首次重新配置后的24小时将被删除(官方文档里面貌似也提到了,最开始没看到,有点尴尬!至于为什么没看到,文章开篇已经做了说明)。
使用root用户和这个加密的初始密码,终于登陆成功。然后第一件事就是修改root用户密码!必须要修改,不然密码丢了,密码找回将是一件非常痛苦的事情。
#### Toggle if initial root password should be written to /etc/gitlab/initial_root_password
# gitlab_rails['store_initial_root_password'] = true
##########################################
$ pwd
/data/gitlab/config
$ ls -ltr initial_root_password
-rw------- 1 root root 749 Jul 27 00:50 initial_root_password
$ cat initial_root_password
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: 9T6nu9PmxrMTuZwhgqEarjxgCnN3jxTRhHtX7WDA7iY=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
此时,因为这个root用户登录密码,时间过去了超过2个半小时(还好,终于在下午1点午睡前搞定)……
下面的截图是官方文档对于root初始化密码的一个简单说明:
下面是官方文档给出的服务器硬件性能与用户量(并发?)的关系:
# CPU
1)4 cores is the recommended minimum number of cores and supports up to 500 users;
2)8 cores supports up to 1000 users;
# 内存
1)4GB RAM is the required minimum memory size and supports up to 500 users;
2)8GB RAM supports up to 1000 users;
在仪表板 · 管理中心 · GitLab页面(http://192.168.223.201/admin)可以看到很多功能和设置项,你甚至可以通过GItlab集成的Grafana来实现可视化监控。
http://192.168.223.201/-/grafana/login/gitlab
在管理中心创建用户【武陵之光】,保存,然后再点击该用户,设置用户密码。退出root用户,并使用该新建的用户登陆到gitlab,点击新建项目,新建完成后,点击该项目,可以发现gitlab提供可一个clone项目到本地、从本地上传文件以及文件夹到项目的测试命令。
下面就是在Windows PC里面安装并使用git bash来执行远程服务器上的测试项目克隆到本地,以及从本地上传文件到远程服务器的项目测试:
# git clone需要输入项目的gitlab用户名和密码
$ git clone http://192.168.223.201/cnskylee/mytestproj.git
Cloning into 'mytestproj'...
warning: You appear to have cloned an empty repository.
cnskylee@cnskylee-PC MINGW64 /
$ cd mytestproj
cnskylee@cnskylee-PC MINGW64 /mytestproj (master)
$ git switch -c main
Switched to a new branch 'main'
cnskylee@cnskylee-PC MINGW64 /mytestproj (main)
$ touch README.md
cnskylee@cnskylee-PC MINGW64 /mytestproj (main)
$ git add README.md
cnskylee@cnskylee-PC MINGW64 /mytestproj (main)
$ git commit -m "add README"
[main (root-commit) 3ebffea] add README
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
cnskylee@cnskylee-PC MINGW64 /mytestproj (main)
$ git push -u origin main
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 223 bytes | 74.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To http://192.168.223.201/cnskylee/mytestproj.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
cnskylee@cnskylee-PC MINGW64 /mytestproj (main)
$
这时可以发现我们提交的文件已经可以在gitlab上的myTestProj目录中展现了,而且分支是main。
# 参考
1、https://docs.gitlab.com/omnibus/installation/
更多推荐
所有评论(0)