栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker之docker-compose一键部署Gitlab

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker之docker-compose一键部署Gitlab

文章目录
  • 1. 简介
    • 1.1 官方文档
    • 1.2 版本
    • 1.3 配置建议
    • 1.4 Gitlab的服务构成
  • 2. 安装
    • 2.1 目录划分
    • 2.2 docker-compose.yml
    • 2.3 解读官方dockerfile
  • 3. GitLab使用
    • 3.1 备份
    • 3.2 恢复
    • 3.3 常用命令
  • 4. 总结

1. 简介

GitLab 是一个类似与GitHub的项目,功能十分强大且界面美观,支持代码管理、issue管理、代码review和CI等功能。它提供免费的社区版和付费版,社区版足够满足我们的项目需求。本篇文章我将介绍GitLab社区版的安装和配置。

1.1 官方文档

https://docs.gitlab.com/ee/

1.2 版本
  • 社区版(CE)
  • 企业版(EE)
1.3 配置建议

建议CPU2核,内存2G以上。

1.4 Gitlab的服务构成
服务说明
Nginx静态web服务器
gitlab-shell用于处理Git命令和修改authorized keys列表。采用Ruby语言
gitlab-workhorse轻量级的反向代理服务器。采用Go语言。处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。
logrotate日志文件管理工具
postgresql数据库
redis缓存中间件
sidekiq用于在后台执行队列任务(异步执行)。采用Ruby语言
unicornAn HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。Rack应用程序的HTTP服务器,旨在为低延迟,高带宽连接的快速客户端提供服务,并利用Unix/Unix类内核中的功能,慢客户端只应通过放置一个能够完全缓冲Unicorn和慢客户端之间的请求和响应的反向代理来提供服务。

可以在admin的管理界面查看以上的组件列表:

2. 安装 2.1 目录划分
.
├── config  # 配置文件
├── data # 数据目录
├── docker-compose.yml
└── logs # 日志目录
2.2 docker-compose.yml
version: '3'

services:
  gitlab:
    image: 'gitlab/gitlab-ce:14.10.2-ce.0'
    restart: always                  
    hostname: 'www.mygitlab.com'
    environment:
      TZ: 'Asia/Shanghai'       
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://172.16.0.86:3000'  # web站点访问地址
        gitlab_rails['gitlab_shell_ssh_port'] = 2222
    ports:
      - '3000:3000' # 注意宿主机和容器内部的端口要一致,否则external_url无法访问
      - '8443:443'
      - '2222:22'
    volumes:
      - ./config:/etc/gitlab
      - ./data:/var/opt/gitlab
      - ./logs:/var/log/gitlab
    logging: 
      driver: "json-file"
      options: 
        max-size: "2g"
        max-file: "2"

容器起来之后,默认用户是root,要登录web界面需要先进入容器的这个文件获取密码:
/etc/gitlab/initial_root_password

2.3 解读官方dockerfile
FROM ubuntu:20.04
MAINTAINER GitLab Inc. 

SHELL ["/bin/sh", "-c"]

# 设置编码
ENV LANG=C.UTF-8

# 安装必须得依赖包
# BusyBox 是一个小型可执行文件,它结合了许多常见 UNIX 实用程序的精简版。它占用很小的体积,通常用在嵌入式设备上。 在安卓系统上安装busybox,就可以运行更多的unix命令如vi,find,grep,cat,wegt等。
# tzdata软件包:是一组表示地球上各地的时间历史的代码和数据,目前由IANA维护。
RUN apt-get update -q 
    && DEBIAN_FRONTEND=noninteractive apt-get install -yq --no-install-recommends 
      busybox 
      ca-certificates 
      openssh-server 
      tzdata 
      wget 
    && rm -rf /var/lib/apt/lists/*

# 使用 BusyBox
ENV EDITOR /bin/vi
RUN busybox --install 
    && { 
        echo '#!/bin/sh'; 
        echo '/bin/vi "$@"'; 
    } > /usr/local/bin/busybox-editor 
    && chmod +x /usr/local/bin/busybox-editor 
    && update-alternatives --install /usr/bin/editor editor /usr/local/bin/busybox-editor 1

# 删除 MOTD
# MOTD 是message of the day的缩写,意思是“当天的提示信息”,通常在用户成功登录到Linux后出现,该信息可以从/etc/motd文本文件中找到
RUN rm -rf /etc/update-motd.d /etc/motd /etc/motd.dynamic
RUN ln -fs /dev/null /run/motd.dynamic

# 拷贝资源
COPY RELEASE /
COPY assets/ /assets/

# 设置资源的权限,去掉w写权限
RUN chmod -R og-w /assets RELEASE ; 
  /assets/setup

# 允许访问内置的工具
ENV PATH /opt/gitlab/embedded/bin:/opt/gitlab/bin:/assets:$PATH

# 设置TERM环境变量
ENV TERM xterm

# 暴露ssh, http, ssh端口
EXPOSE 443 80 22

# 定义卷
VOLUME ["/etc/gitlab", "/var/opt/gitlab", "/var/log/gitlab"]

# 包装器来处理信号、触发runit并重新配置GitLab
CMD ["/assets/wrapper"]

# 配置健康检查
HEALTHCHECK --interval=60s --timeout=30s --retries=5 
CMD /opt/gitlab/bin/gitlab-healthcheck --fail --max-time 10

3. GitLab使用 3.1 备份

在容器内可以执行一下命令进行备份
/usr/bin/gitlab-rake gitlab:backup:create

如果想实现定时备份,可以在宿主机上结合crontab 和 docker命令进行备份。
docker exec -t CONTAINER_ID gitlab-rake gitlab:backup:create
其中:CONTAINER_ID 为gitlab的容器ID。

3.2 恢复

Gitlab的恢复操作会先将当前所有的数据清空,然后再根据备份数据进行恢复.
注意:在指定备份文件恢复时,gitlab会自动补全后面的文件名。

# 停止unicorn和sidekiq,保证数据库没有新的连接,不会有写数据情况
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
    
# 进入备份目录进行恢复,1476900742为备份文件的时间戳
cd /var/opt/gitlab/backups
gitlab-rake gitlab:backup:restore BACKUP=1553965778_2019_03_31_10.7.3
    
# 启动unicorn和sidekiq
gitlab-ctl start unicorn
gitlab-ctl start sidekiq

3.3 常用命令
# 启动所有 gitlab 组件;
gitlab-ctl start

# 停止所有 gitlab 组件;    
gitlab-ctl stop

# 重启所有 gitlab 组件;        
gitlab-ctl restart

# 查看服务状态;        
gitlab-ctl status

# 修改gitlab配置文件;
vim /etc/gitlab/gitlab.rb

# 重新编译gitlab的配置;        
gitlab-ctl reconfigure
    
# 检查gitlab;       
gitlab-rake gitlab:check SANITIZE=true --trace    

# 查看日志;
gitlab-ctl tail        
gitlab-ctl tail nginx/gitlab_access.log

4. 总结

如今的代码仓库的选择已经多样化了,包括:

  • 阿里云的codeup
  • Gitee
  • Github

但是以上都是寄托在这些SAAS平台,代码的安全性还是会低一点。要保证代码安全,可以自己用开源的Gitlab进行搭建部署,使用和Github无异,docker快速搭建更加的方便灵活。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/882406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号