GitLab搭建與維護(基於Docker鏡像sameersbn/docker-gitlab)前端
圖片來自於: Linux公社(https://www.linuxidc.com)linux
前端:Nginx,用於頁面及Git tool走http或https協議
後端:Gitlab服務,採用Ruby on Rails框架,經過unicorn實現後臺服務及多進程
SSHD:開啓sshd服務,用於用戶上傳ssh key進行版本克隆及上傳。注:用戶上傳的ssh key是保存到git帳戶中
數據庫:目前僅支持MySQL和PostgreSQL
Redis:用於存儲用戶session和任務,任務包括新建倉庫、發送郵件等等
Sidekiq:Rails框架自帶的,訂閱redis中的任務並執行git
1.建立虛擬機redis
docker-machine create --driver virtualbox --virtualbox-cpu-count 4 --virtualbox-memory 3072 dev-gitlab
2.配置虛擬機的加速器sql
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
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