gitlab介绍
gitlab是全球第二大代码托管仓库,同时支持和Jenkins结合,实现代码上传到gitlab后,在jenkins里自动化打包,部署,需要编写gitlab.yml
安装
1、启动docker,拉取gitlab镜像
docker pull gitlab/gitlab-ee
2、定义gitlab存放的默认路径
export GITLAB_HOME=/srv/gitlab
3、创建gitlab容器,将容器的配置文件映射到服务器本地,指定容器的映射端口,容器名,容器的hostname,使容器开机自启动
// --detach 以守护进程的方式启动
// --hostname 设置主机名
// --publish 10443:443 把容器的http端口443映射到外部10443端口
// --publish 80:80 把容器的web端口80映射到外部80端口
// --publish 2222:22 把容器的ssh端口22映射到外部2222端口
// --privileged=true 使得容器内的root拥有真正的root权限。否则容器内的root只是外部的一个普通用户权限
// --name gitlab 容器的名称,用于启动或者停止容器用的: 启动,docker start gitlab,查看日志 docker logs gitlab
// --restart always: 自动重启
// --volume 将容器的路径映射到容器外部
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 4443:443 --publish 8880:80 --publish 2222:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ee:latest
4、查看gitlab的日志
sudo docker logs -f gitlab
5、访问gitlab,输入IP地址(虚拟机IP地址)加上端口号8880
用户名是root,密码需要进入gitlab容器获取
6、进入gitlab容器,并获取登录密码
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
进入gitlab之后,修改root密码
优化
这里存在一个问题,我不想使用官方默认的http80端口,因为很容易被占用。我将其改成了8880,但这样造成一个问题,就是我能通过8880端口访问gitlab,但无法使用http协议去拉取分支代码。解决办法是将官方默认的80端口改成其它端口,映射的端口也是一样的。
修改创建容器的命令:
docker run -d \
--hostname ip \
--publish 4443:4443 --publish 8880:8880 --publish 2222:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ee:latest
还需要修改gitlab.rb中的external_url,gitlab被我挂载到了宿主机安装gitlab里的config目录中了,对应容器中的/etc/gitlab目录。这里有两种改法:
方式一:直接将external_url的值改为http://ip:8880
external_url 'http://ip:8880'
方式二:
external_url 'http://192.168.0.128' # 不写端口,默认是80
nginx['redirect_http_to_https_port'] = 8880
nginx['listen_port'] = 8880
这样访问网站之后,可看到如下图: