docker搭建gitlab

来源:互联网 发布:完美数c语言编程 编辑:程序博客网 时间:2024/06/07 21:57
  • 下载mysql镜像作为gitlab的数据存储,运行mysql
  • 下载redis镜像作为gitlab的key-value储存,运行redis
  • 保证以上容器运行完毕,下载gitlab镜像,运行gitlab

1、mysql容器启动

下载mysql镜像,你可以这样做,速度可能会较慢,但不影响

docker pull sameersbn/mysql:latest

创建mysql本地数据卷,如果开启了selinux,必须改变该数据卷目录的selinux文件属性

mkdir -p /datadisk/docker/gitlab/mysql
sudo chcon -Rt svirt_sandbox_file_t /datadisk/docker/gitlab/mysql

运行mysql容器,指定gitlab的账号密码和数据库

docker run –name gitlab-mysql -d \
–env ‘DB_NAME=gitlabhq_production’ \
–env ‘DB_USER=gitlab’ –env ‘DB_PASS=gitlab’ \
–volume /datadisk/docker/gitlab/mysql:/var/lib/mysql \
sameersbn/mysql:latest

进入mysql容器内部,进入mysql创建gitlab用户并给予gitlabhq_production数据库所有权限

docker exec -it /gitlab-mysql mysql -uroot -p 回车,默认root无密码
CREATE 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’@’%.%.%.%’;

退出容器,此时mysql容器已启动和配置完成

2、redis容器启动

下载redis镜像

docker pull sameersbn/redis:latest

创建redis本地数据卷,如果开启了selinux,必须改变该数据卷目录的selinux文件属性

mkdir -p /datadisk/docker/gitlab/redis
sudo chcon -Rt svirt_sandbox_file_t /datadisk/docker/gitlab/mysql

运行redis容器

docker run –name gitlab-redis -d \
–volume /datadisk/docker/gitlab/redis:/var/lib/redis \
sameersbn/redis:latest

3、gitlab容器启动

下载gitlab镜像

docker pull sameersbn/gitlab:latest

创建gitlab本地数据卷,如果开启了selinux,必须改变该数据卷目录的selinux文件属性

mkdir -p /datadisk/docker/gitlab/gitlab
sudo chcon -Rt svirt_sandbox_file_t /datadisk/docker/gitlab/gitlab

配置ssL对称加密认证来对gitlab的应用进行保护,ssl私钥(.key文件)公钥(.crt)文件创建
step1:生成key

openssl genrsa -out gitlab.key 2048

step2:生成证书签名请求文件.csr

openssl req -new -key gitlab.key -out gitlab.csr

step3:用私钥对请求进行签名,生成证书

openssl x509 -req -days 3650 -in gitlab.csr -signkey gitlab.key -out gitlab.crt

step4:加强服务安全,生成更强大的DHE参数,时间可能较长

openssl dhparam -out dhparam.pem 2048

gitlab将通过内置环境变量去读取这些证书,而这些证书的位置将会存放在gitlab内部的数据目录/home/git/data/certs/下面。因此我们要在gitlab的本地卷创建certs目录,并将这些证书复制到该目录下

mkdir /datadisk/docker/gitlab/gitlab/certs
cp gitlab.key /datadisk/docker/gitlab/gitlab/certs/
cp gitlab.crt /datadisk/docker/gitlab/gitlab/certs/
cp dhparam.pem /datadisk/docker/gitlab/gitlab/certs/

step5:使用自签名证书并且使用https的负载均衡器,你只需要配置以下环境变量

–env ‘GITLAB_SSH_PORT=10022’ –env ‘GITLAB_PORT=443’
–env ‘GITLAB_HTTPS=true’ –env ‘SSL_SELF_SIGNED=true’

step6:使用http://www.example.com/gitlab方式访问,配置下面参数

–env ‘GITLAB_RELATIVE_URL_ROOT=/gitlab’

启动gitlab容器,redis别名必须为redisio

sudo docker run –name gitlab -d \
–link gitlab-mysql:mysql –link gitlab-redis:redisio \
–publish 10022:22 –publish 10080:80 \
–env ‘GITLAB_RELATIVE_URL_ROOT=/gitlab’ \
–env ‘GITLAB_SSH_PORT=10022’ –env ‘GITLAB_PORT=443’ \
–env ‘GITLAB_HTTPS=true’ –env ‘SSL_SELF_SIGNED=true’ \
–env ‘GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string’ \
–env ‘GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string’ \
–env ‘GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string’ \
–volume /datadisk/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:latest

页面访问http://ip:10080/gitlab查看效果

参考资料:https://github.com/sameersbn/docker-gitlab

原创粉丝点击