专栏首页雨过天晴原 基于Docker搭建Gitlab

原 基于Docker搭建Gitlab

安装Docker

curl -sSL https://get.docker.com/ | sh

安装Gitlab

sudo docker run --detach \
    --hostname gitlab.example.com \
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

参数说明:

--hostname :设置主机名
--publish :将需要的端口开放(https:443,http:80,ssh:22)
--name :容器名称 方便后面操作
--volume :挂载目录
--detach :后台执行
--restart :容器遇到问题时重启

请注意 /srv/gitlab 目录所在位置,即内容保存位置,可在升级/迁移时不丢失数据。在配置目录时,请注意docker或者其组具有文件的执行写入等权限,如果遇到LinuxACL问题,请尝试 sudo setfacl -mR default:group:docker:rwx /srv/gitlab 修复

如果sshd 已经占用 22 端口,则需要变更 --publish 221:22,并同时配置gitlab_rails['gitlab_shell_ssh_port'] = 221

请注意更换主机名

启动容器后,可以通过sudo docker logs gitlab获得容器的控制台日志。

配置Gitlab

配置gitlab 有两种方法:第一种在启动docker是携带--env参数;第二种修改config下的gitlab.rb文件。

ENV参数

在启动docker时,携带--env环境变量GITLAB_OMNIBUS_CONFIG可以在镜像启动时加载配置信息,但不会写入gitlab.rb配置文件。

示例:

sudo docker run --detach \
    --hostname gitlab.example.com \
    --env GITLAB_OMNIBUS_CONFIG="external_url 'http://my.domain.com/';\r\ngitlab_rails['lfs_enabled'] = true;" \
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:lates

--env GITLAB_OMNIBUS_CONFIG= 参数,后面的内容,为gitlab.rb中可配置内容,比如安装Gitlab时配置sshd端口

请注意更换external_url的域名

请注意:由于ENV是容器生成是写入的,所以重新start或者sudo docker restart gitlab 是无效的。

修改配置文件

修改挂载到/srv/gitlab/configgitlab.rb文件。

然后重启容器:

sudo docker restart gitlab

容器重新启动会重新加载配置文件,这里不同于--env配置

升级Gitlab到最新的版本

随着时间的迁移,gitlab会出现版本的更新(版本帝),在容器中我们并不方便对内部程序进行升级,然后我们却有着更方便的方法,重新更新镜像,生成容器。

因为配置文件或环境变量的配置是不随容器移除而丢失的,所以我们并需要重新配置(只更新镜像后重新生成容器即可。)

停止现有容器

sudo docker stop gitlab

如果在创建容器是没有设置--name字段,请通过docker ps获取容器id或名称,并将gitlab更换成对应的内容。 移除时同样如此!

移除现有容器

sudo docker rm gitlab

更新最新镜像

sudo docker pull gitlab/gitlab-ce:latest

再次创建容器

sudo docker run --detach \
    --hostname gitlab.example.com \
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

为了保持配置的一致性,如果你是通过EVN的方式配置的,再次创建容器时,你仍应采用最初创建时一直的命令。

更新容器后,有机率会遇到500错误,请尝试sudo docker restart gitlab重启,如若仍有问题,请尝试修复权限:

sudo docker exec gitlab update-permissions
sudo docker restart gitlab

TODO

Gitlab Runners

docker-compose

链接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 原 在已安装Apache和MySQL的Ub

    霡霂
  • CentOS7 配置交换分区SWAP

    安装系统时,我们往往会在磁盘分区时,为交换分区单独分出一块儿位置,但当系统安装完成后,我们通过固定的文件位置在配置交换分区。

    霡霂
  • 转 Mac OS/Linux命令查询网络端口占用情况

    霡霂
  • 持续集成系列(I)——享玩Docker之GitLab

    Docker 自2013年以来非常火热,无论是从 github 上的代码活跃度,还是 Redhat 在 RHEL6.5 中集成对 Docker 的支持,就连 G...

    IT技术小咖
  • gitlab10代码备份

    使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份:

    py3study
  • gitlab备份与恢复

    gitlab-rake gitlab:backup:create  #执行命令备份数据库

    似水的流年
  • gitlab-ce白名单设置杜绝并发数过大引起的封ip故障

    章鱼大人微博:http://weibo.com/u/2009151365?wvr=5&lf=reg

    小小科
  • 五分钟学会centos配置gitlab

    修改gitlab配置文件,访问IP:端口,   如果不修改默认80端口,进入文件之后,找到

    Wyc
  • 安装并配置gitlab

    GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

    kevinfaith
  • Ubuntu 环境下 gitlab 安装说明

    然后点击 Ubuntu 的安装过程.进去之后,按照第一步说的运行命令. 这里 使用的 Ubuntu 版本 是 18.04。

    多云转晴

扫码关注云+社区

领取腾讯云代金券