ssh远程登录服务器
安装docker
搜索docker镜像
docker search gitlab
拉取gitlab镜像(gitlab-ce是免费的,gitlab-ee是企业级的)
docker pull gitlab/gitlab-ce:latest
启动gitlab容器
docker run -itd \
--publish 8082:80 --publish 8083:22 \
--privileged=true \
--name gitlab_test \
--restart always \
--volume /data/gitlab/config:/etc/gitlab \
--volume /data/gitlab/logs:/var/log/gitlab \
--volume /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
解释:
1. --publish 8082:80 --publish 8083:22
为将容器内80端口映射至宿主机8082端口,这是访问gitlab的端口,将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
2. --restart always 容器自启动
3. --privileged=true 让容器获取宿主机root权限
4. --name gitlab_test 设置容器名称为gitlab_test
5. gitlab/gitlab-ce:latest 镜像的名称,这里也可以写镜像ID
进入容器内部
sudo docker exec -it <containerId> /bin/bash
修改gitlab.rb配置
vi /etc/gitlab/gitlab.rb gitlab.rb
gitlab.rb文件里添加:
external_url 'http://IP+端口' // gitlab访问地址,不写端口默认是80
gitlab_rails['gitlab_ssh_host'] = 'IP' // ssh主机ip
gitlab_rail['gitlab_shell_ssh_port'] = '8083' // ssh连接端口
nginx['listen_port'] = '8082' // nginx监听端口
执行配置修改命令
gitlab-ctl reconfigure
修改gitlab.yml文件
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
// gitlab.yml配置修改:
gitlab:
host: IP # 这里改成自己的IP
port: 8082 # 这里改成8082
https: false
重启gitlab
gitlab-ctl restart
可以在docker容器内访问
curl IP:8082
也可以再宿主机中访问
curl IP:8082
浏览器访问:http://IP+端口
修改密码
方式一:直接进入cat /data/gitlab/config/initial_root_password,查看初始密码,用root密码登入后网页上修改。
方式二:进入容器中,进入控制台:
gitlab-rails console -e production(有点慢)
user=User.where(id:1).first //查询root用户(即id为1)
user.password='xxx' //设置密码
user.save! //保存
exit //退出
其他注意:
-
如果修改了external_url地址为'http://IP+8082',gitlab访问不了,是因为把docker内部的端口号改为8082了,而通过docker run映射出来的是80端口,所以要去修改服务的映射关系,或者一开始开启容器的时候就执行
docker run -itd \ --publish 8082:8082 --publish 8083:22 \ ...... -
如果内部curl成功而外部访问不到对应端口的服务,查看防火墙是否开启。
-
查看暴露的端口是否被占用。
-
我用的是别人的服务器,是在虚拟机里安装docker服务的,中间还要映射一遍,这个也需要注意下。
-
gitlab体积大,启动时出现返回502要稍微等一会儿再请求。