学习Docker 中 Gitlab 使用系列(一): 安装Gitlab

安装Gitlab

GitLab 分为 社区版(Community Edition,缩写为 CE)和 企业版(Enterprise Edition,缩写为 EE)。社区版是免费的,而企业版包含一些收费服务,一般来说个人开发者用社区版就足够了。

1、拉取镜像:

docker pull gitlab/gitlab-ce

不加版本号,则下载最新版;镜像大概有2G,耐心等待;下载完成之后,可以查看一下
在这里插入图片描述

2、创建备份目录

通常我们会将gitlab的配置(config),数据(data),日志(logs)文件夹放置docker之外,方便日后升级、迁移和备份;所以请先准备好这三个文件夹。

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

在这里插入图片描述

3、使用镜像创建gitlab-ce容器并启动

$ docker run --detach \
  --hostname gitlab.example.com \
  --publish 8443:443 --publish 8880:80 --publish 8222:22 \
  --name gitlab \
  --restart always \
  --volume /app/gitlab/config:/etc/gitlab \
  --volume /app/gitlab/logs:/var/log/gitlab \
  --volume /app/gitlab/data:/var/opt/gitlab \
  --privileged=true \
  gitlab/gitlab-ce:latest

命令参数说明

  • –hostname gitlab.xxx.com: 设置主机名或域名
  • –publish 8443:443:将http:443映射到外部端口8443
  • –publish 8880:80:将web:80映射到外部端口8880
  • –publish 8222:22:将ssh:22映射到外部端口8222
  • –name gitlab: 运行容器名
  • –restart always: 自动重启
  • –volume /app/gitlab/config:/etc/gitlab: 挂载config目录
  • –volume /app/gitlab/logs:/var/log/gitlab: 挂载logs目录
  • –volume /app/gitlab/data:/var/opt/gitlab: 挂载data目录
  • –privileged=true 使得容器内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限
    命令执行成功之后,可以使用下面的命令查看容器运行的状态:
docker ps 

执行结果:
在这里插入图片描述
可以看到 GitLab 已经在运行了,有一个属性 STATUS 为 health: starting,说明 gitlab 的服务正在启动中,还没有启动完毕。等这个状态变成 healthy 时则说明已经部署完成,可以访问了。

4、访问gitlab

gitlab启动成功之后,在浏览器中输入访问地址:http://ip:8880,即可访问。
注意
当项目上传之后,你会发现,无法在浏览器中打开项目文件,同时克隆地址也是不带端口的
在这里插入图片描述
那是因为:gitlab在容器中的访问端口是80,而我们映射的端口是8880。
解决办法:修改gitlab的配置文件(/app/gitlab/config/gitlab.rb),如下

  • 添加external_url参数,设值为 external_url ‘http://ip:8880’
  • 同时设置nginx[‘listen_port’] = 8880
  • 值得注意的是:unicorn[‘port’] 的值不能不能是8880,否则启动后一直是502

5、配置邮件服务器

在配置文件/app/gitlab/config/gitlab.rb中修改,邮件服务器的相关配置

###! **Use smtp instead of sendmail/postfix.**

gitlab_rails['smtp_enable'] = true # 开启SMTP功能
gitlab_rails['smtp_address'] = "smtp.mxhichina.com" #服务器地址
gitlab_rails['smtp_port'] = 465 #服务器端口,不可以选择587
gitlab_rails['smtp_user_name'] = "gitlab@xxx.com" #邮箱账号
gitlab_rails['smtp_password'] = "password/auth code" #邮箱密码,或授权码
gitlab_rails['smtp_domain'] = "smtp.mxhichina.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@ai-alloy.com'#必须跟smtp_user_name一致
gitlab_rails['gitlab_email_display_name'] = 'Gitlab'

配置完成之后测试一下是否配置成功

$ docker exec gitlab gitlab-ctl reconfigure #让配置生效
$ docker exec -it gitlab bash # 开启 gitlab 的 bash 工具
$ gitlab-rails console production # 开启 gitlab-rails 工具
Notify.test_email('test_001@123.com', 'Message Subject', 'Message Body').deliver_now # 发送邮件进行测试
$ docker restart gitlab #重启gitlab

6、配置域名

  • 配置域名
    打开配置文件/app/gitlab/config/gitlab.rb
external_url 'http://192.168.xxx.xxx' # ip 形式
external_url 'http://xxx.com' # 域名形式
external_url 'http://gitlab.xxx.com' # 子域名
external_url 'http://www.xxx.com/gitlab'# 其他形式
  • 配置nginx
upstream gitlab{
    server 127.0.0.1:8880;
}

server {
    listen 80;
    server_name  gitlab.xxx.com;
    access_log     /var/log/nginx/gitlab.example.com-access.log;
    error_log     /var/log/nginx/gitlab.example.com-error.log;
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://gitlab;
    }
}

7、升级

建议:升级之前,先备份一下congif、data、logs三个文件夹,以防万一。

  • 停止并删除原来的gitlab容器,命令如下:
$ docker stop gitlab
$ docker rm -f gitlab
  • 更新gitlab-ce镜像
$ docker pull gitlab/gitlab-ce
  • 运行容器
$ docker run --detach \
  --hostname gitlab.example.com \
  --publish 8443:443 --publish 8880:80 --publish 8222:22 \
  --name gitlab \
  --restart always \
  --volume /app/gitlab/config:/etc/gitlab \
  --volume /app/gitlab/logs:/var/log/gitlab \
  --volume /app/gitlab/data:/var/opt/gitlab \
  --privileged=true \
  gitlab/gitlab-ce:latest

学习过程中,参考了众多的资料:
https://juejin.im/post/5cc1df885188252d6c43fd91
https://blog.csdn.net/wangyy130/article/details/85633303

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值