
该Docker镜像用于构建基于Docker开源容器平台的GitLab应用。GitLab CE通过源码安装方式在镜像中配置,提供代码托管、版本控制、项目管理等完整功能。适用于个人开发者、团队或企业搭建私有代码仓库和协作平台。
wget -qO- https://get.docker.com/ | sh安装)推荐通过Docker Hub获取自动化构建镜像:
bashdocker pull sameersbn/gitlab:11.0.2
也可拉取latest标签(基于仓库HEAD构建):
bashdocker pull sameersbn/gitlab:latest
或本地构建:
bashdocker build -t sameersbn/gitlab github.com/sameersbn/docker-gitlab
使用docker-compose(推荐)
bashwget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
生成至少64位的随机字符串,分别设置为GITLAB_SECRETS_OTP_KEY_BASE、GITLAB_SECRETS_DB_KEY_BASE和GITLAB_SECRETS_SECRET_KEY_BASE(可使用pwgen -Bsv1 64生成)
启动服务:
bashdocker-compose up
手动启动
bashdocker run --name gitlab-postgresql -d \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=password' \ --env 'DB_EXTENSION=pg_trgm' \ --volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \ sameersbn/postgresql:9.6-2
bashdocker run --name gitlab-redis -d \ --volume /srv/docker/gitlab/redis:/var/lib/redis \ sameersbn/redis:latest
bashdocker run --name gitlab -d \ --link gitlab-postgresql:postgresql --link gitlab-redis:redisio \ --publish 10022:22 --publish 10080:80 \ --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \ --env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \ --env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \ --env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
启动后,访问http://localhost:10080并设置root用户密码即可使用。
数据存储
为避免数据丢失,需挂载卷到/home/git/data:
bashmkdir -p /srv/docker/gitlab/gitlab # SELinux用户需执行:sudo chcon -Rt svirt_sandbox_file_t /srv/docker/gitlab/gitlab docker run --name gitlab -d \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
数据库配置
PostgreSQL(推荐)
外部PostgreSQL服务器
sqlCREATE ROLE gitlab with LOGIN CREATEDB PASSWORD 'password'; CREATE DATABASE gitlabhq_production; GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production to gitlab; -- GitLab 8.6.0+需加载pg_trgm扩展 \c gitlabhq_production CREATE EXTENSION pg_trgm;
bashdocker run --name gitlab -d \ --env 'DB_ADAPTER=postgresql' --env 'DB_HOST=192.168.1.100' \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=password' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
链接PostgreSQL容器
使用https://github.com/sameersbn/docker-postgresql%E9%95%9C%E5%83%8F%EF%BC%9A
bashdocker run --name gitlab-postgresql -d \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=password' \ --env 'DB_EXTENSION=pg_trgm' \ --volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \ sameersbn/postgresql:9.6-2 docker run --name gitlab -d --link gitlab-postgresql:postgresql \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
MySQL
外部MySQL服务器
sqlCREATE USER 'gitlab'@'%.%.%.%' IDENTIFIED BY 'password'; CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; GRANT ALL PRIVILEGES ON `gitlabhq_production`.* TO 'gitlab'@'%.%.%.%';
bashdocker run --name gitlab -d \ --env 'DB_ADAPTER=mysql2' --env 'DB_HOST=192.168.1.100' \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=password' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
链接MySQL容器
使用https://github.com/sameersbn/docker-mysql%E9%95%9C%E5%83%8F%EF%BC%9A
bashdocker run --name gitlab-mysql -d \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=password' \ --volume /srv/docker/gitlab/mysql:/var/lib/mysql \ sameersbn/mysql:latest docker run --name gitlab -d --link gitlab-mysql:mysql \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
Redis配置
外部Redis服务器
bashdocker run --name gitlab -d \ --env 'REDIS_HOST=192.168.1.100' --env 'REDIS_PORT=6379' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
链接Redis容器
使用https://github.com/sameersbn/docker-redis%E9%95%9C%E5%83%8F%EF%BC%9A
bashdocker run --name gitlab-redis -d \ --volume /srv/docker/gitlab/redis:/var/lib/redis \ sameersbn/redis:latest docker run --name gitlab -d --link gitlab-redis:redisio \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
邮件配置
发送邮件(SMTP)
以Gmail为例:
bashdocker run --name gitlab -d \ --env 'SMTP_USER=USER@gmail.com' --env 'SMTP_PASS=PASSWORD' \ --env 'SMTP_DOMAIN=gmail.com' --env 'SMTP_HOST=smtp.gmail.com' \ --env 'SMTP_PORT=587' --env 'SMTP_STARTTLS=true' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
回复邮件(IMAP)
以Gmail为例(支持邮件回复评论):
bashdocker run --name gitlab -d \ --env 'IMAP_USER=USER@gmail.com' --env 'IMAP_PASS=PASSWORD' \ --env 'IMAP_HOST=imap.gmail.com' --env 'IMAP_PORT=993' \ --env 'IMAP_SSL=true' \ --env 'GITLAB_INCOMING_EMAIL_ADDRESS=USER+%{key}@gmail.com' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
SSL配置
生成自签名证书
bash# 生成私钥 openssl genrsa -out gitlab.key 2048 # 生成CSR openssl req -new -key gitlab.key -out gitlab.csr # 生成证书 openssl x509 -req -days 3650 -in gitlab.csr -signkey gitlab.key -out gitlab.crt # 生成DHE参数(增强安全性) openssl dhparam -out dhparam.pem 2048
安装证书
将gitlab.key、gitlab.crt和dhparam.pem放入数据卷的certs目录:
bashmkdir -p /srv/docker/gitlab/gitlab/certs cp gitlab.key gitlab.crt dhparam.pem /srv/docker/gitlab/gitlab/certs/
启用HTTPS
bashdocker run --name gitlab -d \ --publish 10443:443 \ --env 'SSL_SELF_SIGNED=true' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
创建备份
bashdocker exec -it gitlab app:rake gitlab:backup:create
恢复备份
bashdocker exec -it gitlab app:rake gitlab:backup:restore BACKUP=1493107454_2017_04_25_11.0.2
自动化备份
设置BACKUP_SCHEDULE(cron格式)启用自动备份:
bashdocker run --name gitlab -d \ --env 'BACKUP_SCHEDULE=0 1 * * *' \ --env 'BACKUP_DIR=/home/git/data/backups' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
AWS远程备份
配置AWS S3备份:
bashdocker run --name gitlab -d \ --env 'AWS_BACKUP=true' \ --env 'AWS_ACCESS_KEY_ID=AKIAJ...' \ --env 'AWS_SECRET_ACCESS_KEY=secret' \ --env 'AWS_S3_BUCKET=my-gitlab-backups' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.0.2
| 参数 | 描述 |
|---|---|
DB_ADAPTER | 数据库适配器(postgresql或mysql2) |
DB_HOST | 数据库主机地址 |
DB_PORT | 数据库端口 |
DB_NAME | 数据库名称 |
DB_USER | 数据库用户名 |
DB_PASS | 数据库密码 |
REDIS_HOST | Redis主机地址 |
REDIS_PORT | Redis端口 |
GITLAB_PORT | HTTP访问端口 |
GITLAB_SSH_PORT | SSH访问端口 |
GITLAB_SECRETS_OTP_KEY_BASE | 2FA加密密钥(至少64位) |
GITLAB_SECRETS_DB_KEY_BASE | CI密钥加密密钥(至少64位) |
GITLAB_SECRETS_SECRET_KEY_BASE | 密码重置等功能密钥(至少64位) |
SMTP_* | SMTP相关配置(USER、PASS、DOMAIN、HOST等) |
IMAP_* | IMAP相关配置(USER、PASS、HOST、PORT等) |
SSL_SELF_SIGNED | 是否使用自签名SSL证书(true/false) |
BACKUP_SCHEDULE | 自动备份cron表达式 |
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务