一、Gitlab的安装
宿主机环境:
- CentOS 7
- docker
- docker-compose
1、查找镜像
docker search gitlab
2、拉取镜像
docker pull gitlab/gitlab-ce
3、构建容器
# 切换目录
mkdir /usr/local/docker
cd /usr/local/docker
touch docker-compose.yml
docker-compose.yml内容如下:
version: "3.7"
services:
gitlab:
image: gitlab/gitlab-ce
restart: on-failure
container_name: gitlab
ports:
- '8080:80'
- '8443:443'
- '222:22'
volumes:
- /usr/local/docker/gitlab/data:/var/opt/gitlab
- /usr/local/docker/gitlab/logs:/var/log/gitlab
- /usr/local/docker/gitlab/conf:/etc/gitlab
4、启动容器
docker-compose up -d
注意:
这样启动容器之后,无论使用ssh还是http方式进行clone时,显示的地址中的主机名都是容器产生的随机id,这就导致外部主机无法解析。
解决方法:
vi gitlab/conf/gitlab.rb
# 修改external_url和gitlab_ssh_host属性为自己虚拟机的访问地址,然后去掉注释,不要加端口号
external_url 'http://192.168.172.142'
gitlab_rails['gitlab_ssh_host'] = '192.168.172.142'
同时如果在上面指定的端口映射不是默认的,比如上面将ssh端口映射到虚拟机的222端口,这时还需要修改:
gitlab_rails['gitlab_shell_ssh_port'] = 222
二、测试Gitlab
像github一样,要使用ssh克隆代码,先要配置ssh秘钥。
1、在物理机生成秘钥
ssh-keygen -t rsa -b 4096 -C "your email"
cd <用户目录>/.ssh/
# 拷贝 id_rsa.pub
2、拷贝到gitlab
点击头像
> settings
> 左导航栏
> SSH keys
3、创建项目
创建项目,测试ssh
注意:
github和gitlab都要用ssh秘钥,而生成的秘钥文件都是id_rsa.pub,为了区分开来,可以这样做:
1、在 .ssh目录下创建
config
,注意文件名和编码,内容如下:
Host github.com
Preferredauthentications publickey
IdentityFile ~/.ssh/github_rsa
单独指定github的ssh秘钥文件为github_rsa
,gitlab使用默认的id_rsa
文件;
2、生成github的秘钥文件
cd <用户目录>/.ssh/
ssh-keygen -t rsa -b 4096 -C "your email" -f github_rsa
3、公钥拷贝到github
4、将私钥添加到
ssh-agent
打开git bash
ssh-agent bash
ssh-add ~/.ssh/github_rsa
然后就OK了。