Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Ubuntu 使用 Docker 安装 Gitlab

Ubuntu 使用 Docker 安装 Gitlab

作者头像
木制robot
发布于 2018-10-09 08:10:04
发布于 2018-10-09 08:10:04
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

前言

最近帮公司重新搭建了 Gitlab,中间遇到了一些坑,折腾了不少时间,在此记录供大家参考。


正文

安装 Docker CE

卸载旧版本

如果有使用旧版本的 Docker (称为 docker 或者 docker-engine),请使用下列命令卸载。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt-get remove docker \
               docker-engine \
               docker.io

安装前准备

Ubuntu 14.04

Ubuntu 14.04 开始,一部分内核模块移到了可选内核模块包 (linux-image-extra-*) ,以减少内核软件包的体积。正常安装的系统应该会包含可选内核模块包,而一些裁剪后的系统可能会将其精简掉。AUFS 内核驱动属于可选内核模块的一部分,作为推荐的 Docker 存储层驱动,一般建议安装可选内核模块包以使用 AUFS。

如果系统没有安装可选内核模块的话,可以执行下面的命令来安装可选内核模块包:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt-get update
$ sudo apt-get install \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual

使用 APT 安装

由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

添加国内下载源(官方源在注释中)

首先为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 官方源
# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

然后,向 source.list 中添加 Docker 软件源:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
# 官方源
# $ sudo add-apt-repository \
#    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
#    $(lsb_release -cs) \
#    stable"

以上命令会添加稳定版本的 Docker CE APT 镜像源,如果需要测试或每日构建版本的 Docker CE 请将 stable 改为 test 或者 nightly。 安装 Docker CE 更新 apt 软件包缓存,并安装 docker-ce: $ sudo apt-get update

$ sudo apt-get install docker-ce

使用脚本自动安装

同时也可以选择使用下列脚本快速安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun

执行脚本自动安装 Docker CE。

启动 Docker CE

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo systemctl enable docker
$ sudo systemctl start docker

Ubuntu 14.04 请用下列命令启动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo service docker start

安装 Gitlab

我们使用 sameersbn/gitlab Gitlab 镜像,Github 地址:https://github.com/sameersbn/docker-gitlab。 首先我们安装 docker-compose

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo pip install docker-compose -U

然后下载 sameersbn/gitlab Gitlab 镜像的 docker-compose.yml 文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml

然后修改其中的配置,以下是我修改后的版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: '2'
services:
  redis:
    restart: always
    image: sameersbn/redis:4.0.9-1
    command:
    - --loglevel warning
    volumes:
    # redis 储存空间挂载到外部
    - /data/gitlab/redis:/var/lib/redis:Z
  postgresql:
    restart: always
    image: sameersbn/postgresql:10
    volumes:
    # postgresql 储存空间挂载到外部
    - /data/gitlab/postgresql:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm
  gitlab:
    restart: always
    # 此处应注意修改为 9.2.5 版本,最新版通过 repo by URL 从其他仓库迁移过来的项目使用 create merge request 时会出现 503 bug
    image: sameersbn/gitlab:9.2.5
    depends_on:
    - redis
    - postgresql
    ports:
    # 将容器中的 8044322 端口映射到宿主机
    - "127.0.0.1:10080:80"
    - "127.0.0.1:10443:443"
    - "10022:22"
    volumes:
    # gitlab 储存空间挂载到外部
    - /data/gitlab/gitlab:/home/git/data:Z
    environment:
    - DEBUG=false
    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - REDIS_HOST=redis
    - REDIS_PORT=6379
    - TZ=Asia/Kolkata
    - GITLAB_TIMEZONE=Kolkata
    - GITLAB_HTTPS=false
    - SSL_SELF_SIGNED=false
    
    # 此处需要改为你访问 gitlab 的域名或者IP
    - GITLAB_HOST=xxx
    # 如果访问时使用 http 为 80,https 则为 443
    - GITLAB_PORT=80
    - GITLAB_SSH_PORT=10022
    - GITLAB_RELATIVE_URL_ROOT=
    # 为了安全起见可以使用 pwgen -Bsv1 64 命令生成随机的 64 个字符串值替换下面三个变量的值
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string
    
    # 需要设置一个默认的 root 用户邮箱,密码不填第一次登录会让你自己设置
    - GITLAB_ROOT_PASSWORD=
    - GITLAB_ROOT_EMAIL=xxx@xxx.xxx
    - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
    - GITLAB_NOTIFY_PUSHER=false
    - GITLAB_EMAIL=notifications@example.com
    - GITLAB_EMAIL_REPLY_TO=noreply@example.com
    - GITLAB_INCOMING_EMAIL_ADDRESS=reply@example.com
    - GITLAB_BACKUP_SCHEDULE=daily
    - GITLAB_BACKUP_TIME=01:00
    
    # 以下为 QQ 企业邮箱配置
    - SMTP_ENABLED=true
    - SMTP_DOMAIN=exmail.qq.com
    - SMTP_HOST=smtp.exmail.qq.com
    - SMTP_PORT=465
    - SMTP_USER=xxx@xxx.xxx
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    # SMTP_TLS 选项原始配置文件中没有,默认为 false,使用 QQ 企业邮箱一定要加上,否则无法发送邮件
    - SMTP_TLS=true
    - SMTP_AUTHENTICATION=login
    - IMAP_ENABLED=false
    - IMAP_HOST=imap.gmail.com
    - IMAP_PORT=993
    - IMAP_USER=mailer@example.com
    - IMAP_PASS=password
    - IMAP_SSL=true
    - IMAP_STARTTLS=false
    - OAUTH_ENABLED=false
    - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
    - OAUTH_ALLOW_SSO=
    - OAUTH_BLOCK_AUTO_CREATED_USERS=true
    - OAUTH_AUTO_LINK_LDAP_USER=false
    - OAUTH_AUTO_LINK_SAML_USER=false
    - OAUTH_EXTERNAL_PROVIDERS=
    - OAUTH_CAS3_LABEL=cas3
    - OAUTH_CAS3_SERVER=
    - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
    - OAUTH_CAS3_LOGIN_URL=/cas/login
    - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
    - OAUTH_CAS3_LOGOUT_URL=/cas/logout
    - OAUTH_GOOGLE_API_KEY=
    - OAUTH_GOOGLE_APP_SECRET=
    - OAUTH_GOOGLE_RESTRICT_DOMAIN=
    - OAUTH_FACEBOOK_API_KEY=
    - OAUTH_FACEBOOK_APP_SECRET=
    - OAUTH_TWITTER_API_KEY=
    - OAUTH_TWITTER_APP_SECRET=
    - OAUTH_GITHUB_API_KEY=
    - OAUTH_GITHUB_APP_SECRET=
    - OAUTH_GITHUB_URL=
    - OAUTH_GITHUB_VERIFY_SSL=
    - OAUTH_GITLAB_API_KEY=
    - OAUTH_GITLAB_APP_SECRET=
    - OAUTH_BITBUCKET_API_KEY=
    - OAUTH_BITBUCKET_APP_SECRET=
    - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
    - OAUTH_SAML_IDP_CERT_FINGERPRINT=
    - OAUTH_SAML_IDP_SSO_TARGET_URL=
    - OAUTH_SAML_ISSUER=
    - OAUTH_SAML_LABEL="Our SAML Provider"
    - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
    - OAUTH_SAML_GROUPS_ATTRIBUTE=
    - OAUTH_SAML_EXTERNAL_GROUPS=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=
    - OAUTH_CROWD_SERVER_URL=
    - OAUTH_CROWD_APP_NAME=
    - OAUTH_CROWD_APP_PASSWORD=
    - OAUTH_AUTH0_CLIENT_ID=
    - OAUTH_AUTH0_CLIENT_SECRET=
    - OAUTH_AUTH0_DOMAIN=
    - OAUTH_AZURE_API_KEY=
    - OAUTH_AZURE_API_SECRET=
    - OAUTH_AZURE_TENANT_ID=

注:请注意有注释的变量! 主要有以下几个关键点:

  1. RedisPostgreSQL、Gitlab 的储存空间挂载到外部;
  2. sameersbn/gitlab 镜像的版本建议使用 10 以下,这里使用的 9.2.5。否则可能会有 bug;
  3. 设置 GITLAB_HOSTGITLAB_PORT,GITLAB_HOST 会在仓库地址中得到体现,如果你用域名访问此处就为域名,用 IP 访问此处为 IP。GITLAB_PORT 取决于访问 gitlab 的协议,http 为 80,https 则为 443;
  4. 设置一个 root 邮箱;
  5. 使用 QQ 企业邮箱发送邮件一定要加上 SMTP_TLS=true, 否则邮件发送不了。其他邮箱配置请参考 Gitlab 官方配置

在配置文件 docker-compose.yml 所在目录下执行下列命令启动 Gitlab:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo docker-compose up -d

Nginx 配置

http 协议

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
upstream gitlab {
        server 127.0.0.1:10080;
}
server {
    server_name git.xxx.xxx;
    listen 80;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://gitlab;
    }
}

https 协议

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
upstream gitlab {
        server 127.0.0.1:10080;
}
server {
    listen 80;
    server_name git.xxx.xxx;
    rewrite ^/(.*)$ https://git.xxx.xxx/$1 permanent;
}
server {
    server_name git.xxx.xxx;
    listen 443 ssl;
    ssl on;
    ssl_certificate /etc/nginx/xxx.crt;
    ssl_certificate_key /etc/nginx/xxx.key;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://gitlab;
    }
}

载入 Gitlab Nginx 配置

配置好相应的协议的配置文件,执行下列命令使其生效:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo nginx -s reload

访问域名即可进入 gitlab 首页。

参考

  1. Ubuntu 安装 Docker CE
  2. sameersbn/docker-gitlab
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
docker gitlab构建镜像
最近在研究流水线,对于我来说,自动构建并上传镜像是非常有必要的,一方面每次都需要执行代码,一方面每次都需要找到版本号,非常的麻烦。 在此,我顺便编写文章,记录gitlab快速搭建以及ci/cd部署。
诺依阁
2025/03/16
591
docker gitlab构建镜像
Ubuntu 16.04安装使用Docker版的GitLab
GitLab,大家都耳熟能详了,Git的好处这里不多说,用过的都说好。GitLab在Linux下npm直接安装使用也很方便,这篇文章是使用基于Docker的GitLab社区版,属于个人没事实践折腾学习docker的又一例子。把最近积累的知识整理了下,后续继续整理spring-Boot系列。 见 http://www.linuxidc.com/Linux/2017-01/139576.htm
用户8710643
2021/06/08
6280
群晖DS218+部署GitLab
https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
程序员欣宸
2022/05/06
1.1K0
群晖DS218+部署GitLab
【gitlab】gitlab快速部署教程
下载页面: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/xenial/main/g/gitlab-ce/
HansBug
2018/10/25
1.9K0
Gitlab CICD 与Kubernetes实践·部署GitLab
上一篇,简单的从?Gitlab CI/CD方法论中探索实践中大致了解Gitlab在CI/CD功能的基本介绍,现在我们通过在K8s集群内安装Gitlab、Gitlab Runner来为深入探索Gitla
公众号: 云原生生态圈
2020/11/02
2.3K0
Gitlab CICD 与Kubernetes实践·部署GitLab
使用 Docker 安装 Gitlab
使用 Docker Compose 搭建 GitLab。 GitHub:https://github.com/khs1994-docker/gitlab docker-compose.yml version: '3' services: gitlab: restart: always image: gitlab/gitlab-ce ports: - "22:22" - "443:443" volumes: - ./config/gitla
康怀帅
2018/02/28
2K0
快速学习-GitLab安装文档
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。 GitLab与GitHub的功能相似,通常企业使用GitLab在局域网搭建自己的Git代码管理仓库。
cwl_java
2020/01/14
9010
快速学习-GitLab安装文档
基于gitlab gitlab-runner的cicd部署
在本文中,我将介绍如何基于 GitLab 和 GitLab Runner 进行 CI/CD 部署。GitLab 是一个强大的 Git 仓库管理系统,提供了完整的 CI/CD 管理功能。GitLab Runner 是一个用于运行 CI/CD 作业的轻量级容器化工具。我们将使用 Docker 容器来运行 GitLab 和 GitLab Runner。
堕落飞鸟
2023/03/27
1.5K0
gitlab远古版本备份&还原&升级
gitlab 8.5.8版本.参照:https://github.com/sameersbn/docker-gitlab.git.太多年了也没有升级,现在准备备份还原到一个新的服务器然后升级一下。gitlab服务器开始是docker-compose搭建的后面迁移到了kubernetes上(记得当时还是1.14),后面kubernetes 版本持续升级到了1.21。基础环境如下:
对你无可奈何
2023/03/09
1.4K0
如何使用 Docker 部署 GitLab
你否曾经想托管自己的GitLab存储库以确保代码永远不会落入坏人之手?尽管在第三方云主机上托管你的存储库有很多优势(例如可用性和可靠性),但要完全控制你的存储库,这样任何人都可以在未经你批准的情况下访问它。
没有故事的陈师傅
2022/09/15
1.2K0
如何使用 Docker  部署 GitLab
CentOS7安装维护Gitlab
下面是官网复制过来的官方安装方法,最简单的安装,在我大天朝,只能望天兴叹,你可翻墙安装或者略过这里,看下面的。
小弟调调
2018/09/11
5.1K0
群晖DS218+部署GitLab
最近开始折腾GitLab的CI功能,就打算在家部署一个GitLab,通常做法是打开电脑,启动GitLab,用完再关闭电脑,总觉得这些操作挺麻烦(您想骂我懒么?您骂得对.....)
程序员欣宸
2021/05/12
2.4K0
群晖DS218+部署GitLab
记一次gitlab代码仓清空还原复盘
故事发生在一个夜黑风高的晚上,一通看着不怎么寻常的电话过来,说是业务赶着上线,但他们的API包上传不了到公司的maven私库,领导叫我支撑下看怎么解决。经过多年不怎么靠谱的直觉,应该是磁盘满了。于是利索地敲下
lyb-geek
2021/11/02
5860
记一次gitlab代码仓清空还原复盘
自建 Gitlab (邮箱配置、拆分 PostgreSQL、Redis) + 随想
最近折腾了一番自建 gitlab,在此做个记录,供君参考。整个构建过程基于 Docker Swarm(近期有计划将微服务移植到 Kubernetes,但还没倒腾顺手,暂时先沿用旧的方案),主题配图与主题无关,请忽略......
捷义
2019/02/18
2.4K0
Docker部署gitlab
参考:https://github.com/sameersbn/docker-gitlab/blob/master/README.md 安装docker-gitlab docker pull sameersbn/gitlab 安装PostgreSQL docker pull sameersbn/postgresql 安装redis docker pull sameersbn/redis 启动postgresql容器 mkdir -p /opt/postgresql/data 启动容器 docker run
苦咖啡
2018/04/28
1.5K0
使用Docker搭建GitLab实践 原
当前版本控制系统(Version Control System,VCS)有集中化版本版本控制系统(Centralized Version Control System,简称 CVCS)和分布式版本控制系统(Distributed Version Control System,简称 DVCS)。  集中化版本控制系统的代表是SVN,分布式版本控制系统的代表是GIT。
donghui
2019/04/19
2.1K0
使用Docker搭建GitLab实践
                                                                            原
ubuntu14.04下安装ngnix,mediawiki,nodebb,everything,gitlab
本周折腾了以下几个东西,mediawiki(维基),nodebb(论坛),gitlab(私有git服务器)。
zqb_all
2019/12/27
2.2K0
私有代码托管平台的搭建与运维
  当我们谈到代码托管平台,我们不得不先谈一谈“版本控制”。什么是“版本控制”?版本控制是一种记录一个或若干内容变化,以便将来查阅特定版本修订情况的系统。在我们日常的编写代码过程或者工作中,版本控制显得尤为重要。有了它你就可以将选定的文件回溯到之前的状态,甚至可以将整个项目代码都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。使用版本控控制系统通常还意味着,就算你胡乱处理项目中的文件,你也照样可以轻松回复到原先的养殖,而且额外增加的工作量却是微乎其微。
zhonger
2022/10/28
2.4K0
私有代码托管平台的搭建与运维
私有化部署 Outline
我在这两篇文章(https://soulteary.com/2021/09/05/opensource-documentation-wiki-software-outline-part-1.html、https://soulteary.com/2021/09/11/opensource-documentation-wiki-software-outline-part-2.html)看到了这个工具,打算试一试,结合那篇文章中罗列的信息,加上我自己的理解,基本上可以把这款软件的特点罗列如下:
凝神长老
2023/03/25
4.2K0
私有化部署 Outline
Kubernetes 1.20.5 安装gitlab
参照https://www.yuque.com/duiniwukenaihe/ehb02i内https://www.yuque.com/duiniwukenaihe/ehb02i/qz49ev之前文章。要完成kubernetes devops工作流的完成。前面已经搭建了jenkins。gitlab代码仓库也是必不可缺少的。现在搞一下gitlab,关于helm前面也做了详细的讲述,这里略过了。另外之前gitlab版本没有中文版本可参照https://hub.docker.com/r/twang2218/gitlab-ce-zh/ twang2218的汉化版本。现在的gitlab已经支持多语言了,可以略过。下面就开始安装gitlab。看了一眼helm的安装方式...文章较少。还是决定老老实实yaml方式安装了
对你无可奈何
2021/04/01
2.5K0
相关推荐
docker gitlab构建镜像
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验