本文讲述如何使用 Docker
安装 GitLab
执行运行脚本
docker run -d -p 6443:443 -p 680:80 -p 6222:22 --name gitlab --restart always -v /gitlab/config:/etc/gitlab -v /gitlab/logs:/var/log/gitlab -v /gitlab/data:/var/opt/gitlab --name gitlab gitlab/gitlab-ce # -p 6222 为 Git Clone 时候ssh的端口 # -p 443 一般无需设置,除非直接对外提供https服务,一般我们用 Nginx 之内的反向代理 # -d:后台运行 # -p:将容器内部端口向外映射 # --name:命名容器名称 # -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录
配置
按上面的方式,GitLab
容器运行没问题,但在GitLab
上创建项目的时候,生成项目的URL
访问地址是按容器的HostName
来生成的,也就是容器的ID
。作为GitLab
服务器,我们需要一个固定的URL
访问地址,于是需要配置GitLab.rb
(宿主机路径:/gitlab/config/gitlab.rb
)。# gitlab.rb文件内容默认全是注释 vim /home/gitlab/config/gitlab.rb
# 配置http协议所使用的访问地址,不加端口号默认为80 external_url 'http://gitlab.xxx.com' # 配置ssh协议所使用的访问地址和端口 gitlab_rails['gitlab_ssh_host'] = 'gitlab.xxx.com' gitlab_rails['gitlab_shell_ssh_port'] = 6222 # 此端口是 run 时 22 端口映射的 6222 端口 :wq #保存配置文件并退出
# 重启 gitlab 容器 docker restart gitlab
# 配置 Nginx 反向代理 vim /etc/nginx/conf.d/gitlab.xxx.com.conf # 内容 server { listen 80; server_name gitlab.xxx.com; rewrite ^(.*)$ https://gitlab.xxx.com$1 permanent; } server { listen 443 ssl; server_name gitlab.xxx.com; ssl_certificate "fullchain.pem"; ssl_certificate_key "privkey.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { ## check for goget AND /namespace/project if ($args ~* "^go-get=1") { set $condition goget; } if ($uri ~ ^/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$) { set $condition "${condition}path"; } if ($condition = gogetpath) { return 200 "<!DOCTYPE html><html><head><meta content='gitlab.xxx.com$uri git ssh://git@gitlab.xxx.com:6222$uri.git' name='go-import'></head></html>"; } proxy_pass http://127.0.0.1:680; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cache_bypass $http_upgrade; client_max_body_size 1024m; } } # Nginx reload nginx -s reload
其他
通过命令docker exec -it 容器名字或容器ID grep 'Password:' /etc/gitlab/initial_root_password
可获取初始密码,登陆完后建议更改。另外建议使用Nginx
反向代理GitLab
的HTTP
请求。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 email@wanbin.tech