
本Docker镜像提供GitLab服务的容器化部署方案,基于CentOS系统构建,需配合PostgreSQL数据库和Redis缓存服务使用。通过环境变量可灵活配置邮件、SSL、认证方式等功能,支持数据持久化存储,适用于团队协作开发中的代码仓库管理、版本控制和项目跟踪。
构建GitLab镜像
bashgit clone https://github.com/jasonbrooks/docker-gitlab.git cd docker-gitlab docker build --tag="$USER/gitlab" .
构建PostgreSQL镜像
bashgit clone https://github.com/CentOS/CentOS-Dockerfiles.git docker build --tag="$USER/postgres" CentOS-Dockerfiles/postgres/centos7/.
构建Redis镜像
bashgit clone https://github.com/CentOS/CentOS-Dockerfiles.git docker build --tag="$USER/redis" CentOS-Dockerfiles/redis/centos7/.
启动Redis容器
bashdocker run --name=redis -d $USER/redis
启动PostgreSQL容器
bashdocker run --name postgresql -d \ -e 'DB_USER=gitlab' \ -e 'DB_PASS=password' \ -e 'DB_NAME=gitlab_production' \ $USER/postgres
启动GitLab容器
bashdocker run --name=gitlab -d \ --link redis:redisio \ --link postgresql:postgresql \ $USER/gitlab
验证部署
docker logs -f gitlab监控启动过程,当supervisor显示unicorn、nginx、cron、sshd和sidekiq均为RUNNING状态时,部署完成docker inspect gitlab | grep IP获取容器IP通过环境变量配置邮件服务,默认使用Gmail发送邮件,需指定有效的Gmail账号和密码:
bashdocker run --name=gitlab -d \ -e 'SMTP_USER=USER@gmail.com' -e 'SMTP_PASS=PASSWORD' \ -v /opt/gitlab/data:/home/git/data \ $USER/gitlab
邮件相关环境变量:
SMTP_DOMAIN:SMTP域名,默认www.gmail.comSMTP_HOST:SMTP服务器地址,默认smtp.gmail.comSMTP_PORT:SMTP端口,默认587SMTP_USER:SMTP用户名(必填)SMTP_PASS:SMTP密码(必填)SMTP_STARTTLS:是否启用STARTTLS,默认trueSMTP_AUTHENTICATION:认证方式,默认在设置SMTP_USER时为login通过SSL加密保护GitLab访问,支持CA证书和自签名证书。
生成自签名证书
bashopenssl genrsa -out gitlab.key 2048
bashopenssl req -new -key gitlab.key -out gitlab.csr
bashopenssl x509 -req -days 365 -in gitlab.csr -signkey gitlab.key -out gitlab.crt
增强服务器安全性
生成强DHE参数:
bashopenssl dhparam -out dhparam.pem 2048
安装SSL证书
将证书文件复制到数据卷目录:
bashmkdir -p /opt/gitlab/data/certs cp gitlab.key /opt/gitlab/data/certs/ cp gitlab.crt /opt/gitlab/data/certs/ cp dhparam.pem /opt/gitlab/data/certs/ chmod 400 /opt/gitlab/data/certs/gitlab.key
启用HTTPS
bashdocker run --name=gitlab -d \ -e 'GITLAB_HTTPS=true' -e 'SSL_SELF_SIGNED=true' \ -v /opt/gitlab/data:/home/git/data \ $USER/gitlab
-e 'SSL_SELF_SIGNED=true'配合负载均衡器使用HTTPS
当使用负载均衡器(如haproxy)时,设置:
bashdocker run --name=gitlab -d \ -e 'GITLAB_HTTPS=true' -e 'SSL_SELF_SIGNED=true' \ -e 'GITLAB_HTTPS_ONLY=false' \ -v /opt/gitlab/data:/home/git/data \ $USER/gitlab
通过GITLAB_RELATIVE_URL_ROOT指定子URI(如/gitlab):
bashdocker run --name=gitlab -d \ -v /opt/gitlab/data:/home/git/data \ -e 'GITLAB_RELATIVE_URL_ROOT=/gitlab' \ $USER/gitlab
更改子URI后需清理缓存:
rm -Rf /opt/gitlab/data/tmp,然后重启容器
支持通过第三方服务登录,需配置对应环境变量:
bashdocker run --name=gitlab -d \ -e 'OAUTH_GOOGLE_API_KEY=xxx.apps.googleusercontent.com' \ -e 'OAUTH_GOOGLE_APP_SECRET=yyy' \ $USER/gitlab
***
bashdocker run --name=gitlab -d \ -e 'OAUTH_TWITTER_API_KEY=xxx' \ -e 'OAUTH_TWITTER_APP_SECRET=yyy' \ $USER/gitlab
GitHub
bashdocker run --name=gitlab -d \ -e 'OAUTH_GITHUB_API_KEY=xxx' \ -e 'OAUTH_GITHUB_APP_SECRET=yyy' \ $USER/gitlab
Redmine
bashdocker run --name=gitlab -d \ -e 'REDMINE_URL=https://redmine.example.com' \ $USER/gitlab
Jira
bashdocker run --name=gitlab -d \ -e 'JIRA_URL=https://jira.example.com' \ $USER/gitlab
以下环境变量可用于自定义GitLab部署:
| 参数 | 描述 | 默认值 |
|---|---|---|
GITLAB_HOST | GitLab服务器主机名 | localhost |
GITLAB_PORT | 服务端口 | 80(HTTP)/443(HTTPS) |
GITLAB_EMAIL | 服务器*** | example@example.com |
GITLAB_SIGNUP | 是否允许用户注册 | false |
GITLAB_PROJECTS_LIMIT | 默认项目数量限制 | 100 |
GITLAB_HTTPS | 是否启用HTTPS | false |
SSL_SELF_SIGNED | 是否使用自签名证书 | false |
DB_TYPE | 数据库类型 | mysql |
DB_NAME | 数据库名称 | gitlabhq_production |
DB_USER | 数据库用户名 | root |
REDIS_HOST | Redis服务器地址 | localhost |
UNICORN_WORKERS | Unicorn工作进程数 | 2 |
GITLAB_BACKUPS | 自动备份频率(disable/daily/monthly) | disable |
完整参数列表见官方文档,建议使用
--env-file指定环境变量文件
docker stop gitlab备份文件将存储在数据卷的bashdocker run --name=gitlab -it --rm [OPTIONS] \ $USER/gitlab app:rake gitlab:backup:create
backups目录docker stop gitlab按提示选择要恢复的备份bashdocker run --name=gitlab -it --rm [OPTIONS] \ $USER/gitlab app:rake gitlab:backup:restore
通过GITLAB_BACKUPS启用自动备份:
bashdocker run --name=gitlab -d \ -e 'GITLAB_BACKUPS=daily' \ -e 'GITLAB_BACKUP_EXPIRY=604800' \ # 备份保留7天(秒) $USER/gitlab
使用nsenter工具访问容器:
nsenter:docker run --rm -v /usr/local/bin:/target jpetazzo/nsentersudo docker-enter gitlabassets/setup/install中的GITLAB_VERSION或拉取最新代码bashcd docker-gitlab docker build --tag="$USER/gitlab" .
docker stop gitlab && docker rm gitlab探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务