原 基于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 条评论
登录 后参与评论

相关文章

来自专栏编程坑太多

『中级篇』数据持久化之bind Mounting(35)

PS:bind mount 需要指定 host 文件系统的特定路径,这就限制了容器的可移植性,当需要将容器迁移到其他 host,而该 host 没有要 moun...

7910
来自专栏张戈的专栏

Docker 入门实践

本文从新手视角记录了一个实际的 Dokcer 应用场景从创建、上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法。

5.6K100
来自专栏有困难要上,没有困难创造困难也要上!

Docker私有仓库管理

31360
来自专栏成长道路

KAFKA的安装配置

一、kafka单机部署 1. 上传kafka_1.20-0.10.1.0.tgz到linux 2. 解压 tar -xzvf kafka_1.20-0....

26900
来自专栏老司机的技术博客

docker实战(7)使用docker快速搭建gitlab私服

下载镜像 docker pull gitlab/gitlab-ce 使用镜像 镜像中有三个目录用于保存gitlab的数据,出于安全考虑,应该使宿主机目录挂载这三...

320100
来自专栏编程坑太多

『中级篇』数据持久化之bind Mounting(35)

PS:bind mount 需要指定 host 文件系统的特定路径,这就限制了容器的可移植性,当需要将容器迁移到其他 host,而该 host 没有要 moun...

11240
来自专栏Debian社区

Docker v1.13.0 正式版发布

Docker v1.13.0 正式版发布了。需要注意的是,在 Docker 1.13 中,与在 Docker 1.12 中引入的实验版本相比,管理插件 api ...

21640
来自专栏有困难要上,没有困难创造困难也要上!

Docker 远程管理

34070
来自专栏云原生架构实践

Docker Compose 安装 on centos7

github地址:https://github.com/docker/compose/releases。这里下载1.22.0版本。

23420
来自专栏holer

如何从公网访问内网IIS

在holer官网上申请专属的holer access key或者使用开源社区上公开的access key信息。

19610

扫码关注云+社区

领取腾讯云代金券