前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu 使用 Docker 安装 Gitlab

Ubuntu 使用 Docker 安装 Gitlab

作者头像
木制robot
发布2018-10-09 16:10:04
1.4K0
发布2018-10-09 16:10:04
举报
文章被收录于专栏:木制robot技术杂谈

前言

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


正文

安装 Docker CE

卸载旧版本

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

代码语言:javascript
复制
$ sudo apt-get remove docker \
               docker-engine \
               docker.io

安装前准备

Ubuntu 14.04

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

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

代码语言:javascript
复制
$ sudo apt-get update
$ sudo apt-get install \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual

使用 APT 安装

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

代码语言:javascript
复制
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

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

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

代码语言:javascript
复制
$ 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
复制
$ 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
复制
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun

执行脚本自动安装 Docker CE。

启动 Docker CE

代码语言:javascript
复制
$ sudo systemctl enable docker
$ sudo systemctl start docker

Ubuntu 14.04 请用下列命令启动:

代码语言:javascript
复制
$ sudo service docker start

安装 Gitlab

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

代码语言:javascript
复制
sudo pip install docker-compose -U

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

代码语言:javascript
复制
wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml

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

代码语言:javascript
复制
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:
    # 将容器中的 80、443、22 端口映射到宿主机
    - "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. 将 Redis、PostgreSQL、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
复制
sudo docker-compose up -d

Nginx 配置

http 协议

代码语言:javascript
复制
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
复制
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
复制
sudo nginx -s reload

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

参考

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • 安装 Docker CE
      • 卸载旧版本
      • 安装前准备
      • 使用 APT 安装
      • 添加国内下载源(官方源在注释中)
      • 使用脚本自动安装
      • 启动 Docker CE
    • 安装 Gitlab
      • Nginx 配置
        • http 协议
        • https 协议
        • 载入 Gitlab Nginx 配置
    • 参考
    相关产品与服务
    容器镜像服务
    容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档