gitlab介绍
GitLab搭建与维护(基于Docker镜像sameersbn/docker-gitlab)
图片来自于: Linux公社(https://www.linuxidc.com)
前端:Nginx,用于页面及Git tool走http或https协议
后端:Gitlab服务,采用Ruby on Rails框架,通过unicorn实现后台服务及多进程
SSHD:开启sshd服务,用于用户上传ssh key进行版本克隆及上传。注:用户上传的ssh key是保存到git账户中
数据库:目前仅支持MySQL和PostgreSQL
Redis:用于存储用户session和任务,任务包括新建仓库、发送邮件等等
Sidekiq:Rails框架自带的,订阅redis中的任务并执行
搭建流程
1.创建虚拟机
docker-machine create --driver virtualbox --virtualbox-cpu-count 4 --virtualbox-memory 3072 dev-gitlab
2.配置虚拟机的加速器
docker-machine ssh dev-gitlab
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=http://6cade60d.m.daocloud.io |g" /var/lib/boot2docker/profile
exit
docker-machine restart dev-gitlab
3.下载redis,postgresql,gitlab镜像
docker pull sameersbn/redis
docker pull sameersbn/postgresql
docker pull sameersbn/gitlab
4.执行上面镜像生成容器( \ 为换行符展现,实际上去掉 \ 一行执行)
# 生成postgresql镜像容器
docker run --name postgresql -d \
-e 'DB_NAME=gitlabhq_production' \
-e 'DB_USER=gitlab' \
-e 'DB_PASS=password' \
-e 'DB_EXTENSION=pg_trgm' \
-v /home/docker/opt/postgresql/data:/var/lib/postgresql \
sameersbn/postgresql
# 生成redis镜像容器
docker run --name redis -d \
-v /home/docker/opt/redis/data:/var/lib/redis \
sameersbn/redis
# 生成redis镜像容器
# 注意: GITLAB_HOST为虚拟机分配的地址
docker run --name gitlab -d \
--link postgresql:postgresql --link redis:redisio \
-p 10022:22 -p 10080:80 \
-e 'GITLAB_PORT=10080' \
-e 'GITLAB_SSH_PORT=10022' \
-e 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
-e 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \
-e 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \
-e 'GITLAB_HOST=192.168.99.100' \
-e 'GITLAB_EMAIL=xiahl0916@163.com' \
-e 'SMTP_ENABLED=true' \
-e 'SMTP_DOMAIN=www.163.com' \
-e 'SMTP_HOST=smtp.163.com' \
-e 'SMTP_STARTTLS=false' \
-e 'SMTP_USER=邮箱地址' \
-e 'SMTP_PASS=邮箱密码' \
-e 'SMTP_AUTHENTICATION=login' \
-e 'GITLAB_BACKUP_SCHEDULE=daily' \
-e 'GITLAB_BACKUP_TIME=00:30' \
-v /home/docker/opt/gitlab/data:/home/git/data -m 2048m --memory-swap=-1 \
sameersbn/gitlab
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。