
如果你使用 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构建,用于部署GitLab Community Edition (CE),采用GitLab官方文档中的源码安装方法。支持PostgreSQL和MySQL数据库后端,集成Redis用于键值存储,提供邮件配置、SSL加密、OmniAuth身份验证等功能,适用于企业内部代码托管、版本控制及CI/CD流程。
bashwget -qO- https://get.docker.com/ | sh
拉取镜像
bash# 拉取指定版本 docker pull sameersbn/gitlab:11.6.5 # 拉取最新版本 docker pull sameersbn/gitlab:latest
本地构建
bashdocker build -t sameersbn/gitlab github.com/sameersbn/docker-gitlab
使用docker-compose
下载docker-compose.yml:
bashwget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
生成64位随机密钥(用于加密敏感数据):
bash# 示例:生成GITLAB_SECRETS_DB_KEY_BASE pwgen -Bsv1 64
启动服务:
bashdocker-compose up
手动启动
步骤1:启动PostgreSQL容器
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:10
步骤2:启动Redis容器
bashdocker run --name gitlab-redis -d \ --volume /srv/docker/gitlab/redis:/var/lib/redis \ sameersbn/redis:4.0.9-1
步骤3:启动GitLab容器
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=生成的64位随机字符串' \ --env 'GITLAB_SECRETS_SECRET_KEY_BASE=生成的64位随机字符串' \ --env 'GITLAB_SECRETS_OTP_KEY_BASE=生成的64位随机字符串' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.6.5
启动后等待几分钟,访问
http://localhost:10080设置root用户密码。
数据存储
为确保数据持久化,需挂载卷/home/git/data:
bash# 创建存储目录(SELinux用户需设置安全上下文) mkdir -p /srv/docker/gitlab/gitlab 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.6.5
数据库配置
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 IF NOT EXISTS pg_trgm;
启动GitLab容器:
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.6.5
链接PostgreSQL容器
使用https://github.com/sameersbn/docker-postgresql%E9%95%9C%E5%83%8F%EF%BC%9A
bash# 启动PostgreSQL容器 docker 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:10 # 链接GitLab容器 docker run --name gitlab -d --link gitlab-postgresql:postgresql \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.6.5
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'@'%.%.%.%';
启动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.6.5
链接MySQL容器
使用https://github.com/sameersbn/docker-mysql%E9%95%9C%E5%83%8F%EF%BC%9A
bash# 启动MySQL容器 docker 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:5.7.22-1 # 链接GitLab容器 docker run --name gitlab -d --link gitlab-mysql:mysql \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.6.5
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.6.5
链接Redis容器
使用https://github.com/sameersbn/docker-redis%E9%95%9C%E5%83%8F%EF%BC%9A
bash# 启动Redis容器 docker run --name gitlab-redis -d \ --volume /srv/docker/gitlab/redis:/var/lib/redis \ sameersbn/redis:4.0.9-1 # 链接GitLab容器 docker run --name gitlab -d --link gitlab-redis:redisio \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:11.6.5
邮件配置
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.6.5
邮件回复功能
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.6.5
SSL配置
生成自签名证书
bash# 生成私钥 openssl genrsa -out gitlab.key 2048 # 生成证书签名请求 openssl req -new -key gitlab.key -out gitlab.csr # 生成证书(有效期10年) openssl x509 -req -days 3650 -in gitlab.csr -signkey gitlab.key -out gitlab.crt # 生成DH参数(加强安全) openssl dhparam -out dhparam.pem 2048
安装证书
将证书文件(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.6.5
创建备份
bashdocker exec -it gitlab gitlab-rake gitlab:backup:create
恢复备份
bash# 将备份文件放入/data/backups目录 docker cp 1600000000_2023_10_01_11.6.5_gitlab_backup.tar gitlab:/home/git/data/backups/ # 恢复备份 docker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1600000000_2023_10_01_11.6.5
升级镜像
bash# 停止并备份当前容器 docker stop gitlab && docker rename gitlab gitlab_old # 拉取新版本镜像 docker pull sameersbn/gitlab:11.6.5 # 使用原配置启动新容器 docker run --name gitlab -d [原配置参数] sameersbn/gitlab:11.6.5 # 验证成功后删除旧容器 docker rm gitlab_old
| 环境变量 | 描述 | 默认值 |
|---|---|---|
DB_ADAPTER | 数据库适配器(postgresql/mysql2) | postgresql |
DB_HOST | 数据库主机 | postgresql |
DB_PORT | 数据库端口 | 5432(postgresql)/3306(mysql) |
DB_NAME | 数据库名称 | gitlabhq_production |
DB_USER | 数据库用户 | gitlab |
DB_PASS | 数据库密码 | 空 |
REDIS_HOST | Redis主机 | redisio |
REDIS_PORT | Redis端口 | 6379 |
GITLAB_PORT | HTTP访问端口 | 80 |
GITLAB_SSH_PORT | SSH访问端口 | 22 |
SMTP_HOST | SMTP服务器 | smtp.gmail.com |
SMTP_PORT | SMTP端口 | 587 |
SMTP_USER | SMTP用户名 | 空 |
SMTP_PASS | SMTP密码 | 空 |
SSL_SELF_SIGNED | 是否使用自签名证书 | false |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务