
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该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表达式 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务