1.首先建立一个目录用于存放配置html
sudo docker pull docker.io/gitlab/gitlab-ce sudo mkdir -p /root/docker/gitlab/config sudo mkdir -p /root/docker/gitlab/logs sudo mkdir -p /root/docker/gitlab/data
2.运行实例(关于最新版本的https 没有搞定,晚上说的都是旧版本, 尝试了一下 旧版本也是无果的,还有官方的新版有不少监控)node
docker run -d --hostname 192.168.100.5 -p 2222:22 -p 8080:80 -p 8443:443 -v /root/docker/gitlab/config:/etc/gitlab -v /root/docker/gitlab/logs:/var/log/gitlab -v /root/docker/gitlab/data:/var/opt/gitlab --restart always --name gitlab gitlab/gitlab-ce:latest # --hostname 指定容器域名,未知功能:建立镜像仓库的时候使用到 # 将容器内443端口映射到主机8443,提供https服务 # 将容器内80端口映射到主机8080,提供http服务 # 将容器内22端口映射到主机2222,提供ssh服务
查看Gitlab容器运行状况nginx
docker inspect gitlab --format "{{.State.Status}}"
4..初次使用gitlab时须要建立默认管理员密码,至少8位,这里输入“12345678”。 git
咱们在登陆那里使用root做为用户名,而后用刚刚设置的密码,就能够以管理员身份登陆Gitlab。 github
咱们来建立一个项目(public 不须要login的),而后简单测试一下,若是用户是windows建议能够考虑安装Git和TortoiseGit图形界面操做。web
上面咱们这个项目是public, 如今修改成internal(须要用户密码)docker
而后修改tortoisegit设置:shell
最后如图:ubuntu
目前还有个遗留问题,就是external_url 的配置(如今在gitlab上的http克隆地址是http://192.168.100.5/root/webapi.git,是没有8080端口,是我本身手动添加的),网上找了不少方法都没有搞定。windows
后来我从新准备一个新的ubuntu虚拟机,就用默认的端口:
结果一切都好了
在使用git推送代码到远程的gitlab库时抛出,You are not allowed to push code to this project“的错误信息。详细信息以下:
点击gitlab的“Settings”> “Repository”,在打开的界面选择 “Protected Branches”项的“Expand”按钮。以下图
在打开的界面能够看见master分支是在受保护的,咱们只须要点击“unprotect”按钮,将master分支从受保护中移除。以下图:
4.若是尚未解决的话,还请检查一下用户权限:
因为端口我这里改成2222,因此须要修改gitlab.rb配置 而后重启docker(docker container restart gitlab)
gitlab_rails['gitlab_shell_ssh_port'] = 2222 #ssh访问地址须要添加端口号 变为 git clone ssh://git@192.168.100.16:2222/root/webapi.git
如今咱们来建立ssh key
git config --global user.name "gavin" git config --global user.email "gavinzhangsan@outlook.com" ssh-keygen -t rsa -C "gavinzhangsan@outlook.com" #后面直接回车 回车就能够了
在git lab删添加key
sudo mkdir -p /root/docker/gitlab/config/ssl openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=FR/ST=Charente/L=Mornac/O=Office/CN=gitlab.domain.com" -keyout /root/docker/gitlab/config/ssl/gitlab.domain.com.key -out /root/docker/gitlab/config/ssl/gitlab.domain.com.crt #生成证书到/root/docker/gitlab/config/ssl目录
修改gitlab.rb配置:
external_url 'https://gitlab.domain.com' nginx['redirect_http_to_https'] = true nginx['redirect_http_to_https_port'] = 80 nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.domain.com.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.domain.com.key" nginx['listen_port'] = 443 nginx['proxy_set_headers'] = { "Host" => "$http_host_with_default", "X-Real-IP" => "$remote_addr", "X-Forwarded-For" => "$proxy_add_x_forwarded_for", "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on", "Upgrade" => "$http_upgrade", "Connection" => "$connection_upgrade" }
在host文件中增长配置:
192.168.100.16 gitlab.domain.com
如今应用新的配置, 而后重启docker
-----如下是网上找的一点资料 看上去比较靠谱 但实际没有解决问题-----
首先,备份默认gitlab.rb和
gitlab.yml
cd /root/docker/gitlab/config
cp gitlab.rb gitlab.rb.default
按上面的方式,gitlab容器运行没问题,但在gitlab上建立项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。做为gitlab服务器,咱们须要一个固定的URL访问地址(实际上我搞了好久也没有搞定external_url , 也就是http访问, 最后实在不行就用ssh协议吧),修改/root/docker/gitlab/config/gitlab.rb
# 配置http协议所使用的访问地址
external_url 'http://192.168.100.5' #nginx['listen_addresses'] = ['*', '[::]'] #nginx['listen_port'] = 8080 # 配置ssh协议所使用的访问地址和端口 #gitlab_rails['gitlab_ssh_host'] = '192.168.100.5' #gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 此端口是run时22端口映射的2222端口
而后重启容器:
docker exec -t gitlab gitlab-ctl reconfigure
docker exec -t gitlab gitlab-ctl restart
参考:
Use Docker-Compose to Run Gitlab via Https With Self-signed CA