使用 Docker 安装 GitLab CE(官方镜像)
官方文档太繁琐,这里简单记录一下“使用 Docker 安装 GitLab CE (官方镜像)”关键步骤:
1、创建文件夹,例如:~/docker/gitlab-ce,用于保存 data、etc 和 log
mkdir -p ~/docker/gitlab-ce
2、在 Bash 配置文件中设置环境变量:GITLAB_HOME(若不设置,安装时会提示:该变量默认为空,会使用docker-compse.yaml文件所在的路径)
# 打开文件
vi .bashrc
# 写入如下配置
export GITLAB_HOME=~/docker/gitlab-ce
# 使之生效
source .bashrc
3、编写docker-compose.yml
# 说明:此文件用于在 Docker 中部署 GitLab CE(官方版本)
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
hostname: 'gitlab.xxx.com' # 你的域名或 IP
environment:
# 添加 Gitlab-CE 自己的配置(相当于修改 /etc/gitlab/gitlab.rb 配置文件)
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.xxx.com' # 如果使用宿主机的 nginx 做反代和SSL/TLS,此处必须使用 http://
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # SSH 端口:访问宿主机的 2222,会连接到容器的 22 端口
# 开启 gitlab pages
pages_external_url "http://pages.xxx.com"
gitlab_pages['enable'] = true # CI/CD Runner 可部署 Pages
gitlab_pages['inplace_chroot'] = true # true 意味着不使用 chroot(沙箱化目录),Pages 直接在原始路径下运行
# Pages 服务监听端口(内部使用)
gitlab_pages['redirect_http_to_https'] = false # 不使用 HTTPS
gitlab_pages['external_http'] = ['0.0.0.0:8090']. # 不使用 HTTPS
#gitlab_pages['redirect_http_to_https'] = true # 使用 HTTPS
#gitlab_pages['external_https'] = ['0.0.0.0:443'] # 使用 HTTPS
#gitlab_pages['cert'] = "/path/to/cert/pages.xxx.com.crt"
#gitlab_pages['key'] = "/path/to/cert/pages.xxx.com.key"
# 启用镜像仓库 (Registry)
registry_external_url 'http://registry.xxx.com'
registry['enable'] = true
registry['registry_http_addr'] = "0.0.0.0:5050"
# 禁用 Prometheus / Alertmanager / Mattermost
prometheus_monitoring['enable'] = false
alertmanager['enable'] = false
mattermost['enable'] = false
# 数据库与 Redis 限制
puma['worker_processes'] = 2
sidekiq['concurrency'] = 10
postgresql['shared_buffers'] = "256MB"
redis['maxmemory'] = "512mb"
# 关闭邮件
gitlab_rails['smtp_enable'] = false
# 端口映射:前者是主机,后者是容器
ports:
- '80:80' # HTTP (如果使用宿主机 nginx 做反代,此处需要修改端口,例如:8080:80)
- '443:443' # HTTPS(如果使用宿主机 nginx 做反代和SSL/TLS,此行就不需要了)
- '2222:22' # SSH(docker 容器内的 sshd 也会映射(占用)一个宿主机端口,所以此处不能使用22,否则会报错:22端口已被占用)
- '5050:5050' # registry 对外的端口
volumes:
- '$GITLAB_HOME/config:/etc/gitlab' # gitlab 配置目录
- '$GITLAB_HOME/logs:/var/log/gitlab' # gitlab 日志目录
- '$GITLAB_HOME/data:/var/opt/gitlab' # gitlab 数据目录
shm_size: '1g' # 用来配置容器的 共享内存(/dev/shm)大小(默认只有64M),有些软件(特别是数据库、缓存、需要 IPC 的应用)可能需要更大的共享内存,否则会报错或性能下降
# 限制容器占用的总内存,或者临时方案:docker update --memory="4g" --memory-swap="4g" gitlab
deploy:
resources:
limits:
memory: 4g
4、运行(漫长的等待)
docker compose up -d
5、可以通过如下命令查看安装日志
docker logs -f <container_id>
首次运行起来之后,需要设置 root 账号密码
docker logs <容器名称或ID> | grep 'Password'
通过 frp 内网穿透搭建的 Gitlab 容器,接下来可能会遇到一个坑:push 会遇到各种失败(即便你有权限、即便你已经把公钥放到 Gitlab 的 ssh key 设置里面了),解决方案:修改本机的 ~/.ssh/config 文件,增加如下内容:
Host gitlab.xxx.com # 这里必须使用 gitlab.xxx.com,否则无效
HostName gitlab.xxx.com
User root
Port 2222
# 如果你没有使用 frp 进行内网穿透,就不需要下面这个配置
# ProxyCommand 用 socat 实现 HTTP CONNECT 代理
ProxyCommand socat - PROXY:xxx.com:%h:%p,proxyport=7002
参考这篇文章:https://www.cnblogs.com/isky0824/p/19053430
官方参考文档:https://docs.gitlab.com/install/docker/installation/

浙公网安备 33010602011771号