2 Docker容器中GitLab配置
该容器使用 Linux 官方软件包,因此可以使用唯一的配置文件 /etc/gitlab/gitlab.rb 来配置实例。
编辑配置文件
要访问 GitLab 配置文件,可以在运行容器的上下文中启动 shell 会话。
开启会话
sh$ sudo docker exec -it gitlab /bin/bash或者,也可以直接用编辑器打开
/etc/gitlab/gitlab.rb:sh$ sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb编辑
/etc/gitlab/gitlab.rb,更新下面字段:保存并退出编辑器,重新启动容器使配置生效:
sh$ sudo docker restart gitlab每次启动容器时,GitLab 都会重新配置自己。有关 GitLab 的更多配置选项,请参阅配置文档。
预配置容器
通过在 Docker run 命令中添加环境变量 GITLAB_OMNIBUS_CONFIG,可以预先配置 GitLab Docker 镜像。这个变量可以包含任何 gitlab.rb 设置,并在加载容器的 gitlab.rb 文件之前进行评估。通过这一行为,你可以配置外部 GitLab URL、数据库配置或 Linux 软件包模板中的任何其他选项。GITLAB_OMNIBUS_CONFIG 中包含的设置不会写入 gitlab.rb 配置文件,而是在加载时进行评估。要提供多个设置,请用冒号 (;) 分隔。
下面的示例设置了外部 URL,启用了 LFS,并以 Prometheus 所需的最小shm大小启动了容器:
sudo docker run --detach \
--hostname gitlab.example.com \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'; gitlab_rails['lfs_enabled'] = true;" \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ee:<version>-ee.0每次执行 docker run 命令时,都需要提供 GITLAB_OMNIBUS_CONFIG 选项。GITLAB_OMNIBUS_CONFIG 的内容在后续运行中不会被保留。
在公网IP上运行GitLab
你可以修改 --publish 标记,让 Docker 使用你的 IP 地址,并将所有流量转发到 GitLab 容器。
暴露GitLab在IP 198.51.100.1:
sudo docker run --detach \
--hostname gitlab.example.com \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'" \
--publish 198.51.100.1:443:443 \
--publish 198.51.100.1:80:80 \
--publish 198.51.100.1:22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ee:<version>-ee.0然后你就可以在http://198.51.100.1/和https://198.51.100.1/上访问GitLab了。
更改GitLab暴露端口
GitLab 占用容器内的特定端口。
如果想使用与默认端口 80(HTTP)、443(HTTPS)或 22(SSH)不同的主机端口,则需要在 docker run 命令中添加单独的 --publish 指令。
例如,在主机的 8929 端口上公开网络接口,在 2424 端口上公开 SSH 服务:
使用下面的命令:
shsudo docker run --detach \ --hostname gitlab.example.com \ --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com:8929'; gitlab_rails['gitlab_shell_ssh_port'] = 2424" \ --publish 8929:8929 --publish 2424:22 \ --name gitlab \ --restart always \ --volume $GITLAB_HOME/config:/etc/gitlab \ --volume $GITLAB_HOME/logs:/var/log/gitlab \ --volume $GITLAB_HOME/data:/var/opt/gitlab \ --shm-size 256m \ gitlab/gitlab-ee:<version>-ee.0NOTE
发布端口的格式是
hostPort:containerPort。请阅读 Docker 文档中有关公开传入端口的更多信息。进入运行中的容器:
sh$ sudo docker exec -it gitlab /bin/bash编辑
/etc/gitlab/gitlab.rb文件,设置external_url:ruby# For HTTP external_url "http://gitlab.example.com:8929" or # For HTTPS (notice the https) external_url "https://gitlab.example.com:8929"该 URL 中指定的端口必须与 Docker 向主机发布的端口一致。此外,如果
nginx['listen_port']中没有明确设置 NGINX 的监听端口,则会使用external_url代替。更多信息,请参阅 NGINX 文档。设置SSH端口:
rubygitlab_rails['gitlab_shell_ssh_port'] = 2424最后,重新配置 GitLab:
sh$ sudo gitlab-ctl reconfigure按照上面的示例,你的网络浏览器就能访问
<hostIP>:8929上的 GitLab 实例,并通过 SSH 向2424端口推送。你可以在 Docker compose 部分看到使用不同端口的
docker-compose.yml示例。
配置多数据库连接
从 GitLab 16.0 开始,GitLab 默认使用两个指向同一个 PostgreSQL 数据库的数据库连接。
如果出于任何原因,您希望切换回单一数据库连接:
编辑容器中的
/etc/gitlab/gitlab.rb文件:sh$ sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb添加以下内容:
rubygitlab_rails['databases']['ci']['enable'] = false重启GitLab容器:
sh$ sudo docker restart gitlab