共计 2650 个字符,预计需要花费 7 分钟才能阅读完成。
最近在学习自动化部署的一些内容,自动化部署,涉及到的内容有 Docker、Jenkins、Gitlab 等内容,今天通过 docker 玩了一遍 gitlab,下面是一些心得
安装 Gitlab
Docker 安装服务实在是太方便,我们通过 docker 来安装 Gitlab,运行如下命令查看 Gitlab 的镜像文件
搜索镜像
sudo docker search gitlab
看到镜像有很多,如果 OFFICIAL 这一项下面是 [OK] 表示为官方的镜像,我这里使用第四个,因为这是中文版的,鄙人英语不好,还是看中文版的比较舒服。
其实,中文版也就是安装了一个语言包而已,有兴趣可以自己安装第一个,然后再手动配置中文包
下载镜像
sudo docker pull twang2218/gitlab-ce-zh
启动服务
docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --restart always --name gitlab -v /usr/local/gitlab/etc:/etc/gitlab -v /usr/local/gitlab/log:/var/log/gitlab -v /usr/local/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh
查看启动情况
// 添加 -a 参数,把启动的,没有启动的都列出来
sudo docker ps
配置 Gitlab
配置的时候,我们需要进入容器当中配置,如果直接修改我们映射到容器外部的配置文件,总会出现一些奇怪的问题,为了避免出现问题,尽量按照如下操作流程进行相关的配置和测试
第一步:进入容器
sudo docker exec -it gitlab bash
第二步:修改 gitlab.rb 文件
sudo cd /etc/gitlab
sudo vim gitlab.rb
第三步:修改 IP 和端口
该部分内容的修改是为了解决,我们再 gitlab 创建项目的时候,项目访问地址是容器 id 的问题
// 可以使用 / 来查找关键字,找到指定的内容,然后通过 n 来下一个查找
// 在 gitlab 创建项目时候 http 地址的 host(不用添加端口)
external_url 'http://xx.xx.xx.xx'
// 在 gitlab 创建项目时候 ssh 地址的 host
gitlab_rails['gitlab_ssh_host'] = 'xx.xx.xx.xx'(不用添加端口)
# docker run 的时候我们把 22 端口映射为外部的 8022 了,这里修改下
gitlab_rails['gitlab_shell_ssh_port'] = 8022
第四步:修改邮箱
在 gitlab.rb 文件的最后添加如下代码
# 是否启用
gitlab_rails['smtp_enable'] = true
# SMTP 服务的地址
gitlab_rails['smtp_address'] = "smtp.qq.com"
# 端口
gitlab_rails['smtp_port'] = 465
# 你的 QQ 邮箱(发送账号)gitlab_rails['smtp_user_name'] = "958317640@qq.com"
# 授权码
gitlab_rails['smtp_password'] = "********"
# 域名
gitlab_rails['smtp_domain'] = "smtp.qq.com"
# 登录验证
gitlab_rails['smtp_authentication'] = "login"
# 使用了 465 端口,就需要配置下面三项
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
# 你的 QQ 邮箱(发送账号)gitlab_rails['gitlab_email_from'] = '958317640@qq.com'
第五步:应用配置
sudo gitlab-ctl reconfigure
第六步:重启服务
sudo gitlab-ctl restart
第七步:验证邮箱服务
// 在容器中进入命令行
sudo gitlab-rails console
// 测试邮件发送
sudo Notify.test_email("xxx@163.com","title","gitlab").deliver_now
// 退出命令行
sudo exit
// 退出容器
sudo exit
常用命令
启动
// 第一次启动
// 这部分命令不能直接 copy,格式化只是为了方便看
docker run -d
-p 8443:443
-p 8090:80
-p 8022:22
--restart always
--name gitlab
-v /usr/local/gitlab/etc:/etc/gitlab
-v /usr/local/gitlab/log:/var/log/gitlab
-v /usr/local/gitlab/data:/var/opt/gitlab
--privileged=true
twang2218/gitlab-ce-zh
// 如果停止了,用 start 启动
docker start <ID || Name>
- - d 在后台启动
- -p 8443:443 把容器中应用的端口 443 映射为外部的 8443 端口
- -p 8090:80 把容器中应用的端口 80 映射为外部的 8090 端口
- -p 8443:443 把容器中应用的端口 443 映射为外部的 8443 端口
- –restart 重启配置
- –name 容器启动之后的名字
- -v 把容器中的配置,日志,数据映射到容器外部
通过 –name 配置了 gitlab 的名字之后,我们后续可以通过这个 name 对容器进行相关的启动和停止操作
容器外停止
sudo docker stop gitlab
// 这里的 gitlab 就是我们上一步 docker run 当中使用 --name 配置的名字
容器外重启
sudo docker restart gitlab
进入容器命令行
sudo docker exec -it gitlab bash
容器中应用配置
sudo gitlab-ctl reconfigure
容器中重启服务
sudo gitlab-ctl restart
服务地址
以下是我的 gitlab 服务地址,仅供测试使用,后面可能会删除,大家不要使用哈
http://118.31.225.185:8090
注意事项
如果您使用的是阿里云服务器,需要在安全组里面把你想要对外开放的端口打开,否则是无法访问的
正文完