admin管理员组文章数量:1663656
本文章介绍如何使用Docker安装Gitlab,并且包含开启邮箱服务、添加备案信息等
文章目录
- 1. 安装GitLab
- 2. 配置邮件服务
- 2.1 配置邮箱
- 2.2 重启Docker容器
- 3. 添加备案信息
- 3.1 编辑文件的方式实现(比较麻烦,需要在容器内编辑文件)
- 3.2 在本地编辑拷贝进容器的方式
- 3.3 备份原配置文件
- 4. 关闭流水线
- 5. 将网站映射到公网
- 6. 注意事项!!
- 6.1 部署时注意存储空间大小
- 查看空间大小
- 7. 后记
1. 安装GitLab
最近想在本地创建一个GitLab仓库,简单记录一下:
- 简单设置一个GitLab信息的存储目录
export GITLAB_HOME=/etc/docker/gitlab/ && mkdir -p $GITLAB_HOME
- docker中启动
# 访问的地址可以是:
# IP+端口:通过「IP+端口」访问主页
# 仅IP:通过「IP+80端口」访问
# 域名:若是放在公网上(或内网穿透后)可以使用该ip进行访问
sudo docker run --detach \
--hostname 192.168.1.2 \
--publish 443:443 --publish 80:80 --publish 23:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ee:latest
IP的设置有很多方式,可以试着+三级域名来实现,比如DNS解析、frp内穿自带的三级域名功能等…
- 启动成功后,访问刚才设置的IP可以进入GitLab主页
需要注意的是,GitLab需要启动的东西很多,占用的资源比较多,所以一开始访问的时候可能是下面这样显示「502:We’re sorry. GitLab is taking too much time to respond.」字样,这只是GitLab还没完全启动完成,安心等待即可。
若是什么都访问不到,可以尝试使用:
docker ps -a
docker logs -f continer_name
来查看启动状态、查看日志等内容,其他操作自行尝试。
启动成功后再次登录,会进入一个登录界面,初始用户名是
root
,初始密码是一串很长的随机数,在Linux下执行下面的命令获取初始密码:
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
将改密码输入到Gitlab的登录密码框里,用户名写root
,即可登陆成功。
2. 配置邮件服务
2.1 配置邮箱
发送通知邮件,邮件服务就是你注册成功或者有合并请求的时候会给你发送邮件,告诉你一些相关的信息。
可以不配置,非必须。
– 以163邮箱为例 –
## 进入目录并编辑配置文件
cd $GITLAB_HOME/config/
vim gitlab.rb
## 在文件中插入或修改以下内容
external_url 'http://XXXXX'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xxuser@163"
gitlab_rails['smtp_password'] = "xxpassword"
gitlab_rails['smtp_domain'] = "163"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = "xxuser@163"
user["git_user_email"] = "xxuser@163"
gitlab_rails['gitlab_email_display_name'] = '发件人名称'
「邮箱授权码」可以去邮箱那里去申请,各种邮箱也是一样的,只不过不同的邮箱(如163、gmail)等需要修改
smtp_domain
、端口等信息。
最后一个[发件人名称],是你收到邮件时候显示的名称,比如我设置成Jim@Git
后,收到邮件是如下这个样子的:
2.2 重启Docker容器
docker restart gitlab
## 2.3 验证电子邮箱 修改个人账号的邮箱信息 - 依次进入`[点击左上角头像] - [偏好设置] - [电子邮箱] -[添加电子邮箱]`,给自己添加一个电子邮箱。 - 此时你添加的这个邮箱将会收到一个来自你上面配置的邮箱的邮件,如果没有请检查自己的配置文件是否有写错,或者是否重启过项目了 - 点击收到的邮件中的链接,验证一下电子邮件,随后重新回到浏览器,在Gitlab上依次点击 `[左上角头像] -[偏好设置] - [用户资料] - [电子邮件]`可以将“提交邮件”与“电子邮箱”设置为刚才收邮件的邮箱。
3. 添加备案信息
Gitlab并没有提供官方的设置,但是如果要将网站放在公网上的话,一般要在页脚加上备案信息(且最好关闭注册功能)
Gitlab添加备案信息的方式如下:
中心思想很简单:编辑或者替换掉容器里的一个文件,首先看编辑的方式:
3.1 编辑文件的方式实现(比较麻烦,需要在容器内编辑文件)
- 进入容器
docker exec -it gitlab bash
- 进入下面的目录
cd /opt/gitlab/embedded/service/gitlab-rails/app/views/devise/shared
- 编辑
_footer.html.haml
文件,做以下修改
.footer-container.gl-w-full.gl-align-self-end
%hr.gl-m-0
.container.gl-py-5.gl-display-flex.gl-justify-content-space-between
.gl-display-flex.gl-gap-5.gl-flex-wrap
- unless public_visibility_restricted?
= link_to _("Explore"), explore_root_path
= link_to _("Help"), help_path
= link_to _("把你的备案号写在这里(只要修改这一个地方)"), "http://beian.miit.gov/",target:'_blank',class:'text-nowrap',rel:'noopener noreferrer'
= render 'devise/shared/language_switcher'
= footer_message
3.2 在本地编辑拷贝进容器的方式
- 在本地创建一个这样的文件,拷贝上面的代码,填写进去备案号
- 将文件拷贝到服务器中,随便某个目录下,然后在该目录下执行下面的命令
docker cp _footer.html.haml gitlab:/opt/gitlab/embedded/service/gitlab-rails/app/views/devise/shared
^^ 直接执行这个命令就可以
请注意,为了避免麻烦,导致容器出现问题,请在修改或替换前备份该文件。
3.3 备份原配置文件
- 进入容器
docker exec -it gitlab bash
cp /opt/gitlab/embedded/service/gitlab-rails/app/views/devise/shared/_footer.html.haml /opt/gitlab/embedded/service/gitlab-rails/app/views/devise/shared/_footer.html.haml.bak
不用重启容器,刷新页面,备案信息就出现在页脚啦~
如下图所示:
4. 关闭流水线
流水线功能,说实在的我一直用不着,但是我每次创建项目之后,隔三差五就会给我发个邮件,告诉我流水线错误,所以索性直接关闭了吧!
编辑/etc/docker/gitlab/config/gitlab.rb
文件,添加如下内容
gitlab_rails['gitlab_default_projects_features_builds'] = false
重启项目,之后创建的所有项目默认是关闭流水线的,但是之前的项目不受影响,只能在项目中手动关闭,关闭方式如下:
依次进入项目-[设置]-[通用]-[可见性,项目功能,权限(展开)]
关闭项目流水线,每次只能为一个项目关闭流水线(项目多的可就难受了)。
5. 将网站映射到公网
读到这里可以先看一下我的另一篇博客【通过Docker+frp实现内网穿透】,了解下怎么做内网穿透。
在这里只说几个注意事项,剩下的主要内容其实都在上面那篇博客里:
- 443端口不用映射出去,除非你要做ssl(也就是https)
- frp在服务器端的http端口最好是80,否则你要做隐形解析才能访问到网站
- Gitlab有个22端口,通过ssh进行clone/push,这个端口就保持不动,通过
容器的22-宿主机的22-frpc映射宿主机的22端口-云服务器的22
,(这种情况下需要将宿主机的ssh端口与云服务的ssh端口都修改了),但是宿主机的22端口其实可以换成其他的,改掉相应的frpc配置就可以。不过,我尝试将它们都修改掉,都不用22端口,其中包括Gitlab配置
、容器端口
、容器-宿主机映射端口
、宿主机端口
、云服务端口
,再通过frp映射出来(以上红字我全部修改了,只为了保留下所有操作系统的22端口),但是失败了,有动手能力强的可以试试解决下,我想了很多方案,头都快秃了,理论上来说是没有问题的,但是还是失败了,交给你们了。 - 如果
3
中的配置失败了,那么你只能通过git clone http://.....
的方式进行克隆,而不能使用git git@git...
的方式进行克隆,虽然不影响使用但是有点碍眼,推荐使用我说的所有端口都是22的方式进行部署。
6. 注意事项!!
6.1 部署时注意存储空间大小
这一件事情单独拎出来作为一个单元,因为它真的很重要,我就遇到了
我们前面启动Gitlab的时候,有一个存放配置文件的目录,前文中使用的一直都是/etc/docker/gitlab
,但是对于Linux来讲,/etc
目录可能很小,记得挑选一个空间足够大的地方来存储Gitlab,否则当这一块存储空间(类似于Windows的磁盘)满了之后,Gitlab就会502。
查看空间大小
在Linux中执行以下命令,查看各个空间的大小:
df -lh
或者在该命令后面加上路径,查看该路径所在分区的空间大小,如下:
df -lh /home
可以看到这一块空间还有209G可用,我就把Gitlab的配置内容放在这里咯。
如果存储空间满了,可以尝试docker save/docker load
方式保存应用后拷贝到其他地方并重新开发应用,记得拷贝所有的配置文件(文章中多次提到的从容器中映射出来的/etc/docker/gitlab
文件夹下的所有内容)。
另外还有一件事情需要注意,Ubuntu Server安装后默认只会使用50%的空间,这是什么鬼设定,气死我了,后面出教程如何搞定,到时候链接附在这里。
7. 后记
写到这里就结束了,其实从最开始的部署,到后面的每一个大标题,都是一次次的修改出来的,总感觉不太满意,就继续改继续改,最终成了这个样子。
另外,本来还想写一点“Gitlab的设置”的,但是那些就自己琢磨吧,我想部署Gitlab的人,肯定有一部分人是奔着学习去的吧,什么更改语言、个性化等,后面都会遇到。
再说一个小技巧,新版本的Gitlab与Github一样,有网页编辑器,在随便某个项目下点击键盘上的
。
按钮,可以打开,效果如下:
注意:在网页上编辑的内容用ctrl+s
是无法保存的,必须得点左侧第三个按钮提交才可以。
版权声明:本文标题:使用Docker在局域网安装GitLab,并且开启邮箱、添加备案信息等 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1730001417a1218837.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论