docker安装部署gitlab[完全自主版]
GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。时常别企业用作代码存储仓库。文章使用docker中运行操作系统的方式完成部署软件,不使用已有的gitlab-ce镜像。文章约定琥珀字体命令为容器中执行命令,黑色字体为宿主机执行命令,红色字体为需替换参数,青蓝色为命令输出或配置文件内容。
环境说明
- 操作系统:Ubuntu 18.04
- 最低配置:1核4G
- 主机类型:阿里云ECS主机
- docker版本:20.10.7
- docker-image:ubuntu:18.04 [54919e10a95]
- gitlab软件:gitlab-ce_11.11.8-ce.0_amd64.deb
前置条件
- 操作系统已经完成安装
- docker软件安装完成
- ubuntu:18.04 [54919e10a95] docker镜像文件已准备完毕
- 主机可以连接到互联网
- 容器中系统软件源已经配置
gitlab软件下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/xenial/main/g/gitlab-ce/gitlab-ce_11.11.8-ce.0_amd64.deb
实施步骤
步骤概述:
- 1. 定制操作系统镜像
- 2. 部署软件
- 3. 配置gitlab
一、定制镜像
容器ubuntu 18、20镜像默认没有安装systemd服务,会导致容器赋予操作系统特权时报错失败,需要手动安装systemd服务。同时部署一些常用的软件及工具。
宿主机中执行
# docker run -idt --name define_ubuntu 54919e10a95d
# docker exec -it define_ubuntu /bin/bash
以下命令容器中执行,容器中安装软件
# apt clean all # apt-get update # apt-get install libsemanage1 libsemanage1-dev -y # apt-get install wget sudo systemd openssh-server vim net-tools tzdata -y # exit
生成镜像
# docker commit -p define_ubuntu
宿主机中执行,为新生成的镜像打标签,通过查到的镜像id号打标
# docker images # docker tag image_id ubuntu:18.04_2 # docker images
删除容器,一定要确认自定义镜像能够正常运行再删除。
# docker rm -f define_ubuntu
二、部署软件
基于第一步制作的镜像,运行一个具有操作特权的容器,在容器中进行gitlab软件安装配置,由于在运行容器的时候使用 –privileged=true 参数后期会出现agetty进程占用过高的CPU,所以需要执行systemctl stop getty@tty1.service和 systemctl disable getty@tty1.service命令关闭agetty进程。
2.1 安装软件
# docker run -idt --privileged=true -p 8866:8866 --name ubuntu_gitlab ubuntu:18.04_2 /sbin/init # docker exec -it ubuntu_gitlab /bin/bash # systemctl stop getty@tty1.service # systemctl disable getty@tty1.service # cd # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/xenial/main/g/gitlab-ce/gitlab-ce_11.11.8-ce.0_amd64.deb # ls -l # dpkg -i gitlab-ce_11.11.8-ce.0_amd64.deb gitlab: https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server gitlab: It looks like GitLab has not been configured yet; skipping the upgrade script. *. *. *** *** ***** ***** .****** ******* ******** ******** ,,,,,,,,,***********,,,,,,,,, ,,,,,,,,,,,*********,,,,,,,,,,, .,,,,,,,,,,,*******,,,,,,,,,,,, ,,,,,,,,,*****,,,,,,,,,. ,,,,,,,****,,,,,, .,,,***,,,, ,*,. _______ __ __ __ / ____(_) /_/ / ____ _/ /_ / / __/ / __/ / / __ `/ __ \ / /_/ / / /_/ /___/ /_/ / /_/ / \____/_/\__/_____/\__,_/_.___/ Thank you for installing GitLab! GitLab was unable to detect a valid hostname for your instance. Please configure a URL for your GitLab instance by setting `external_url` configuration in /etc/gitlab/gitlab.rb file. Then, you can start your GitLab instance by running the following command: sudo gitlab-ctl reconfigure For a comprehensive list of configuration options please see the Omnibus GitLab readme https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
2.2 配置软件
便捷/etc/gitlab/gitlab.rb配置文件,红字部分根据实际情况配置。配置文件可以直接复制然后按照实际情况修改。
# cp -rp /etc/gitlab/gitlab.rb /root/gitlab.rb.bakcup # vim /etc/gitlab/gitlab.rb external_url 'http://192.168.111.136:8866' #mail configure gitlab_rails['gitlab_email_from'] = '302950208@qq.com' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "302950208@qq.com" gitlab_rails['smtp_password'] = "adhxxxblssssffblbcafe" gitlab_rails['smtp_domain'] = "qq.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true user['git_user_name'] = "302950208@qq.com"
执行命令配置软件
# nohup sudo /opt/gitlab/embedded/bin/runsvdir-start & # sudo gitlab-ctl reconfigure .................. .................. - restart service service[gitlab-workhorse] * service[node-exporter] action restart - restart service service[node-exporter] * service[gitlab-monitor] action restart - restart service service[gitlab-monitor] * service[redis-exporter] action restart - restart service service[redis-exporter] * service[prometheus] action restart - restart service service[prometheus] Recipe: gitlab::prometheus * execute[reload prometheus] action run - execute /opt/gitlab/bin/gitlab-ctl hup prometheus Recipe: <Dynamically Defined Resource> * service[alertmanager] action restart - restart service service[alertmanager] * service[postgres-exporter] action restart - restart service service[postgres-exporter] Running handlers: Running handlers complete Chef Client finished, 351/1221 resources updated in 02 minutes 30 seconds gitlab Reconfigured! # gitlab-ctl status run: alertmanager: (pid 1570) 130s; run: log: (pid 1395) 139s run: gitaly: (pid 1456) 134s; run: log: (pid 534) 266s run: gitlab-monitor: (pid 1516) 133s; run: log: (pid 1219) 162s run: gitlab-workhorse: (pid 1487) 134s; run: log: (pid 1062) 193s run: logrotate: (pid 1107) 183s; run: log: (pid 1125) 179s run: nginx: (pid 1080) 189s; run: log: (pid 1096) 188s run: node-exporter: (pid 1507) 133s; run: log: (pid 1183) 168s run: postgres-exporter: (pid 1584) 130s; run: log: (pid 1454) 135s run: postgresql: (pid 692) 258s; run: log: (pid 710) 255s run: prometheus: (pid 1535) 133s; run: log: (pid 1351) 145s run: redis: (pid 20) 393s; run: log: (pid 19) 393s run: redis-exporter: (pid 1524) 133s; run: log: (pid 1276) 152s run: sidekiq: (pid 1002) 206s; run: log: (pid 1019) 202s run: unicorn: (pid 942) 212s; run: log: (pid 974) 209s
三、配置gitlab
登录gitlab进行基础环境配置,修改管理密码,关闭注册入口。
3.1 修改密码
由于我们环境是部署在容器中的并做了端口映射的直接使用宿主机的ip地址及映射端口进行访问。http://192.168.111.136:8866/,第一次访问会直接提示修改密码,默认用户名为root。密码修改完成后测试是否登录成功。
3.2 关闭注册入口
常规环境中gitlab主要用作用内网或公司内部存储资源使用,所以不需要对外提供注册通道,账号改为管理员手动下发。
1. 在gitlab 主页点击 小扳手 图标 进入 设置界面。
2. 在设置界面 点击 Settings 进行参数设置
3.在 General选项卡中按照截图步骤操作取关闭自主注册通道。
重新访问确认自主注册通道关闭。