GitLab搭建与维护(基于Docker镜像sameersbn/docker

gitlab_arch

2.3. 组件

前端:Nginx,用于页面及Git tool走http或https协议

后端:Gitlab服务,采用Ruby on Rails框架,通过unicorn实现后台服务及多进程

SSHD:开启sshd服务,用于用户上传ssh key进行版本克隆及上传。注:用户上传的ssh key是保存到git账户中

数据库:目前仅支持MySQL和PostgreSQL

Redis:用于存储用户session和任务,任务包括新建仓库、发送邮件等等

Sidekiq:Rails框架自带的,订阅redis中的任务并执行

3. GitLab安装部署 3.1. 官方支持的方式 3.2. 采用docker镜像安装GitLab 3.2.1. 简介 3.2.2. 架构图

docker_gitlab_arch

3.2.3. 下载镜像

docker pull sameersbn/gitlab:7.4.3 # 下载gitlab镜像

docker pull sameersbn/mysql:latest # 下载gitlab所用到的mysql镜像

docker pull sameersbn/redis:latest # 下载gitlab所用到的redis镜像

3.2.4. 安装 3.2.4.1. 启动redis

命令: docker run \ --name=gitlab_redis \ -tid \ sameersbn/redis:latest

3.2.4.2. 启动mysql

mkdir -p /opt/gitlab/mysql

命令: docker run \ --name=gitlab_mysql \ -tid \ -e 'DB_NAME=gitlabhq_production' \ -e 'DB_USER=gitlab' \ -e 'DB_PASS=password' \ -v /opt/gitlab/mysql:/var/lib/mysql \ sameersbn/mysql:latest

3.2.4.3. 启动gitlab

mkdir -p /opt/gitlab/data /opt/gitlab/log

命令: docker run \ --name='gitlab' \ -itd \ --link gitlab_mysql:mysql \ --link gitlab_redis:redisio \ -e 'GITLAB_PORT=80' \ -e 'GITLAB_SSH_PORT=22' \ -e 'GITLAB_HOST=gitlab.example.com' \ -v /var/run/docker.sock:/run/docker.sock \ -v $(which docker):/bin/docker \ -v /opt/gitlab/data:/home/git/data \ -v /opt/gitlab/log:/var/log/gitlab \ sameersbn/gitlab:7.4.3 上述是开启一个基本gitlab。 完整(包含LDAPEMAIL): docker run \ --name='gitlab' \ -itd \ --link gitlab_mysql:mysql \ --link gitlab_redis:redisio \ -e 'GITLAB_PORT=80' \ -e 'GITLAB_SSH_PORT=22' \ -e 'LDAP_ENABLED=true' \ -e 'LDAP_HOST=192.168.1.1' \ -e 'LDAP_PORT=389' \ -e 'LDAP_UID=sAMAccountName' \ -e 'LDAP_METHOD=plain' \ -e 'LDAP_BIND_DN=test@example.com' \ -e 'LDAP_PASS=passwd' \ -e 'LDAP_BASE=OU=example_users,DC=example-family,DC=com' \ -e 'LDAP_ACTIVE_DIRECTORY=true' \ -e 'LDAP_ALLOW_USERNAME_OR_EMAIL_LOGIN=false' \ -e 'GITLAB_HOST=gitlab.example.com' \ -e 'SMTP_ENABLED=true' \ -e 'SMTP_DOMAIN=example.com' \ -e 'SMTP_HOST=192.168.1.2' \ -e 'SMTP_PORT=25' \ -e 'SMTP_STARTTLS=false' \ -v /var/run/docker.sock:/run/docker.sock \ -v $(which docker):/bin/docker \ -v /opt/gitlab/data:/home/git/data \ -v /opt/gitlab/log:/var/log/gitlab \ sameersbn/gitlab:7.4.3

这一步骤会耗时几分钟,因为这一步会做一些初始化操作,例如导入数据表结构等。可以通过docker logs gitlab来查看安装过程。同理,mysql、redis容器也可以通过docker logs gitlab_mysql和docker logs gitlab_redis来查看启动信息。

注意:上面创建的3个容器必须位于同一台宿主上,因为–link gitlab_mysql:mysql –link gitlab_redis:redisio就是将同个宿主上的容器做链接

当然,redis和mysql也支持使用ip+端口,不用–link,带上环境变量即可,方法是: 完整: docker run \ --name='gitlab' \ -itd \ --net=none \ --hostname='gitlab.example.com' \ -e 'DB_TYPE=mysql' \ -e 'DB_HOST=192.168.3.1' \ -e 'DB_PORT=3356' \ -e 'DB_NAME=gitlabhq_production' \ -e 'DB_USER=gitlab' \ -e 'DB_PASS=passwd' \ -e 'REDIS_HOST=192.168.3.2' \ -e 'REDIS_PORT=6402' \ -e 'UNICORN_WORKERS=20' \ -e 'GITLAB_PORT=80' \ -e 'GITLAB_SSH_PORT=22' \ -e 'LDAP_ENABLED=true' \ -e 'LDAP_HOST=192.168.3.3' \ -e 'LDAP_PORT=389' \ -e 'LDAP_UID=sAMAccountName' \ -e 'LDAP_METHOD=plain' \ -e 'LDAP_BIND_DN=test@example.com' \ -e 'LDAP_PASS=passwd' \ -e 'LDAP_BASE=OU=example_users,DC=example-family,DC=com' \ -e 'LDAP_ACTIVE_DIRECTORY=true' \ -e 'LDAP_ALLOW_USERNAME_OR_EMAIL_LOGIN=false' \ -e 'GITLAB_HOST=gitlab.example.com' \ -e 'SMTP_ENABLED=true' \ -e 'SMTP_DOMAIN=example.com' \ -e 'SMTP_HOST=192.168.3.4' \ -e 'SMTP_PORT=25' \ -e 'SMTP_STARTTLS=false' \ -v /var/run/docker.sock:/run/docker.sock \ -v $(which docker):/bin/docker \ -v /opt/gitlab/data:/home/git/data \ -v /opt/gitlab/log:/var/log/gitlab \ sameersbn/gitlab:7.4.3 sameersbn/gitlab:7.4.3不支持redis的任何验证,只能无密码使用

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/fd0ac618a9d4878e599da3ee291da339.html