基于docker安装gitlab, 并使用nginx代理实现https访问仓库
准备工作
创建Nginx代理容器
创建自定义网络, 仅仅是为了方便维护, 也可以不创建使用默认的
1
| docker network create proxy
|
创建代理容器
1 2 3 4
| docker run --name proxy --network proxy -d -p 80:80 -p 443:443 \ -v /data/ssl:/etc/nginx/certs \ -v /var/run/docker.sock:/tmp/docker.sock:ro \ jwilder/nginx-proxy
|
需要将SSL证书挂载到容器内 /etc/nginx/certs
以启用域名HTTPS访问
创建GitLab容器
由于GitLab配置参数太多所以使用docker-compose
创建相应的数据目录和docker-compose.yml
1 2 3
| mkdir -p /data/gitlab/{config,data,logs} cd /data/gitlab vim docker-compose.yml
|
docker-compose.yml 文件内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| version: '2' services: gitlab: image: 'twang2218/gitlab-ce-zh' restart: unless-stopped hostname: 'foo.bar.com' environment: VIRTUAL_HOST: 'foo.bar.com' TZ: 'Asia/Shanghai' GITLAB_OMNIBUS_CONFIG: | external_url 'https://foo.bar.com' gitlab_rails['time_zone'] = 'Asia/Shanghai' nginx['listen_port'] = 80 nginx['listen_https'] = false nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on" } volumes: - /data/gitlab/config:/etc/gitlab - /data/gitlab/data:/var/opt/gitlab - /data/gitlab/logs:/var/log/gitlab networks: default: external: name: proxy
|
GitLab支持代理SSL官方说明
启动容器
1 2 3 4 5 6
| docker-compose up -d ... docker ps CONTAINER ID IMAGE PORTS NAMES 23621d9fe059 twang2218/gitlab-ce-zh 22/tcp, 80/tcp, 443/tcp gitlab_gitlab_1 5a47c2dd8ebf jwilder/nginx-proxy 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp proxy
|
启动后初始化会有几分钟时间, 之后通过 https://foo.bar.com
访问就能看到GitLab的初始页面
设置好管理员账号后创建测试仓库就能看到仓库默认使用https

关于如何使用SSH访问仓库可以查看文档