使用Docker搭建 gitlab
一.安装Docker
1.既然要使用Docker安装,那么首先需要安装Docker
apt-get update
apt-get install docker
yum update
yun install docker
2.启动 Docker 服务
service docker start
3.查看是否安装成功
docker version
二.安装 GitLab
2.1 方式一 : 使用 docker-compose 安装
这种方式没什么难度 , 适合 Linux 新手使用 , 但 200M+ 的大小需要花点时间;
wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
docker-compose up
注: 由于 docker 镜像站在国外,下起来可能会比较慢 , 建议使用国内的镜像加速或现成的镜像源,如阿里、DaoCloud、Docker中文社区提供的服务.
DaoCloud传送门: https://www.daocloud.io/mirror#accelerator-doc
个人感觉pull速度确实快了很多 , 感谢这些热心而充满开源精神的同仁。
2.2 方式二 : 逐步安装
2.2.1下载镜像
# 下载gitlab所用到的gitlab镜像
docker pull sameersbn/gitlab:latest
# 下载gitlab所用到的postgresql镜像 (其实使用mysql也行)
docker pull sameersbn/postgresql:latest
# 下载gitlab所用到的redis镜像
docker pull sameersbn/redis:latest
2.2.2 按顺序运行
docker run --name gitlab-postgresql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
--volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \
sameersbn/postgresql:latest
docker run --name gitlab-redis -d \
--volume /srv/docker/gitlab/redis:/var/lib/redis \
sameersbn/redis:latest
docker 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=s5GsFwhcShsQkp5sjS3CxqBjKRKVrJdGcTKT87W394W28QLPXn64N8NmBNgJ4NBr' \
--env 'GITLAB_SECRETS_SECRET_KEY_BASE=TlhjRipykC6jrQFNSyiComve907BaU5Bstz4EgYMuNqLztUuZ4MXD1ONfbmbmOBs' \
--env 'GITLAB_SECRETS_OTP_KEY_BASE=9nfi978nL3pC9QwlFLQ2no5YpuOrRMxtqKaYVCgjHKee37Vx7Zco05AETPsg18i4' \
--volume /srv/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:latest
2.3 安装成功后访问
访问GitLab ->
服务器地址 : http://服务器 ip 地址:10080
本地访问地址:http://localhost:10080
使用默认的用户名和密码登录:
默认的用户名:root
默认的密码:5iveL!fe
2.4 坑与解决思路
在安装的过程中遇到了一些小的问题 , 我是参照旧版本的安装方式进行修改的 , 最后进行了一些细微的调整 , 总算解决了问题
之前运行 git-lab 时的配置文件
docker 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' \
--volume /srv/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:latest
之后启动失败了:
[root@iZ2ze0zkx5pckai7smgnv0Z ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
40439aafc98e sameersbn/gitlab:latest "/sbin/entrypoint.sh " 5 seconds ago Exited (1) 4 seconds ago gitlab
c67128a042a6 sameersbn/postgresql:9.5-1 "/sbin/entrypoint.sh" 2 minutes ago Up 2 minutes 5432/tcp gitlab-postgresql
c1c6883b8524 sameersbn/redis:latest "/sbin/entrypoint.sh" About an hour ago Up About an hour 6379/tcp gitlab-redis
通过那个 Exited 可以得知启动并没有成功 , 于是在思考是因为什么
docker logs -f 40439aafc98e
Initializing logdir...
Initializing datadir...
Installing configuration templates...
Configuring gitlab...
Configuring gitlab::database
Configuring gitlab::redis
Configuring gitlab::secrets...
ERROR:
Please configure the GITLAB_SECRETS_SECRET_KEY_BASE parameter.
Cannot continue. Aborting...
查看官方文档:
Note: Since GitLab 8.0.0 you need to provide the GITLAB_SECRETS_DB_KEY_BASE parameter while starting the image.
Tip: You can generate a random string using pwgen -Bsv1 64 and assign it as the value of GITLAB_SECRETS_DB_KEY_BASE.
意思是从 gitlab 8.0版本开始需要一个 GITLAB_SECRETS_DB_KEY_BASE 加密参数 ,
然后通过 pwgen -Bsv1 64 可以生成一个 ,
我生成了 , 之后发现还是报错 …. (? _ ?)
最后看了一下完整的参数配置
docker run --name gitlab -d\
--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \
--publish 10022:22 --publish 10080:80 \
--env 'GITLAB_HOST=YOURHOST' \
--env 'GITLAB_RELATIVE_URL_ROOT=/' \
--env 'GITLAB_PORT=80' --env 'GITLAB_SSH_PORT=10022' \
--env 'SMTP_ENABLED=true' --env 'SMTP_HOST=YOURMAILHOST' --env 'SMTP_DOMAIN=YOURDOMAIN' --env 'SMTP_PORT=465' \
--env 'SMTP_USER=YOURUSER' --env 'SMTP_PASS=YOURPASSWORD' --env 'SMTP_STARTTLS=true' --env 'SMTP_TLS=true' \
--env 'GITLAB_SECRETS_DB_KEY_BASE=5OAvCZZM2ZzCzPJInFcn3NiVVNi6YbBIfJQIQDO6Or2utKLpWyTHaeBnVWV6GwpK' \
--env 'GITLAB_SECRETS_SECRET_KEY_BASE=TlhjRipykC6jrQFNSyiComve907BaU5Bstz4EgYMuNqLztUuZ4MXD1ONfbmbmOBs' \
--env 'GITLAB_SECRETS_OTP_KEY_BASE=9nfi978nL3pC9QwlFLQ2no5YpuOrRMxtqKaYVCgjHKee37Vx7Zco05AETPsg18i4' \
--volume /YOUR/GITLAB/FOLDER:/home/git/data \
sameersbn/gitlab:latest
发现除了 GITLAB_SECRETS_SECRET_KEY_BASE 之外还有 : GITLAB_SECRETS_DB_KEY_BASE 和 GITLAB_SECRETS_OTP_KEY_BASE ,
于是又加了两个 , 最后成功启动了
2.5 界面展示
还有很多运行参数可以自由配置 , SSH 等多种登陆方式配置 ,
感兴趣的朋友可以多试试 ,
最后 , 感谢 Docker , 感谢这些开源社区 , 愿未来更美好 !