1、检查docker是否安装,并且服务并且启动:

安装:yum install docker

启动:service docker start

 

2、搜索gitlab镜像,并下载:

搜索:docker search gitlab

下载:docker pull gitlab/gitlab-ce:latest

dockerHub中有常用的有两种gitlab-ce(社区版)和gitlab-ee(企业版)

 

3、运行镜像:

命令:

docker run --detach \

--publish 8443:443 --publish 8081:80 --publish 8022:22 \

--name gitlab \

--restart always \

--volume /srv/gitlab/config:/etc/gitlab \

--volume /srv/gitlab/logs:/var/log/gitlab \

--volume /srv/gitlab/data:/var/opt/gitlab \

gitlab/gitlab-ce:latest

执行命名将会下载最新的gitlab镜像(包含了第2步的操作),启动gitlab容器,同时会发布通过http,ssh,https访问的端口,并映射到宿主机的指定端口上,gitlab的文件存储在宿主机的/srv/gitlab目录下。

端口设置:

协议

gitlab容器

宿主机

HTTP

80

8080

HTTPS

443

8443

SSH

22

8022

 

文件存储:gitlab容器数据文件挂在在宿主机的文件目录中,

宿主机目录

gitlab容器目录

作用

/srv/gitlab/data

/var/opt/gitlab

存储应用数据

/srv/gitlab/logs

/var/log/gitlab

存储日志文件

/srv/gitlab/config

/etc/gitlab

gitlab配置文件

注意:gitlab容器运行后,默认管理员用户名是root,第一次访问时需要设置root用户的密码。

 

4、gitlab配置文件

gitlab的配置文件在gitlab容器下的/etc/gitlab/gitlab.rb配置文件中,访问gitlab.rb配置文件需进入gitlab容器中,运行shell命令,:

登录gitlab容器:docker exec -it gitlab /bin/bash

编辑配置文件:vi /etc/gitlab/gitlab.rb

或者直接登录修改:docker exec -it gitlab vi /etc/gitlab/gitlab.rb

 

gitlab.rb配置文件修改会需要重新加载gitlab配置,并且重新启动服务:

直接重启gitlab容器:docker restart gitlab

或者登录到容器后,执行重载配置和重启gitlab服务命令:

gitlab-ctl reconfigure:重新加载配置

gitlab-ctl restart:重启gitlab服务

 

常用gitlab命令:

gitlab-ctl stop|start|restart|reconfigure

 

5、gitlab容器http访问配置:

5.1、gitlab容器内置了Nginx服务器对外提供服务,默认情况下nginx监听的http协议端口是80,外部若是要通过http协议访问,则容器运行时需要将Nginx监听的端口映射到宿主机端口上,如:

docker run --p 8081:80.....

http协议80端口映射到宿主机的8081端口上,外部则可以通过8081端口访问gitlab容器,如访问:http://192.168.146.128:8081/进入gitlab系统界面

 

5.2、external_url配置:配置显示在gitlab系统界面中clone的git仓库地址,如

external_url "http://192.168.146.128:8081"

注意8081是gitlab容器映射到宿主机上的端口,这里指定是外部能够直接访问的地址。并且若是使用https访问,则external_url中设置成https访问协议。

 

Nginx默认使用的是80端口,但是当设置了external_url配置后,Nginx则不会使用默认80端口,而是去使用external_url中指定的端口,如:http://192.168.146.128:8081,Nginx则会去使用8081端口,若是配置的external_url中没有指定端口,http协议则是80端口,https协议则是443端口。

 

5.3、手动指定Nginx监听端口,修改gitlab.rb配置文件,增加配置:

nginx['listen_port'] = 80

注:1、nginx使用端口的优先顺序:nginx['listen_port']手动指定 > external_url配置端口 > 默认80。

2、配置好nginx监听的端口后,需要将其映射到宿主机端口后,外部才能访问。external_url中配置的是外部能够访问地址,则端口则是映射出去的宿主机端口。

 

5.5、配置示例:

gitlab容器运行命令:docker run -d --p 18081:8081.....

external_url "http://192.168.146.128:18081"

nginx['listen_port'] = 8081

如上,gitlab容器中使用的http端口是8081,gitlab容器启动时将8081映射到了宿主机的18081端口上,则外部访问地址是:http://192.168.146.128:18081

若是不指定nginx['listen_port']配置,gitlab容器使用的http端口则是18081(根据external_url而来),但是运行容器时并没有将gitlab容器的18081映射出去,则访问http://192.168.146.128:18081时,访问失败。

所以,启动gitlab容器时需预先想好gitlab容器需要时用的http端口。

 

6、gitlab容器https访问配置:

6.1、设置外部访问的地址:

external_url "https://192.168.146.128:8443",外部使用https协议访问。设置external_url后,则nginx则会根据其配置监听8443端口,

 

6.2、同http配置一样,也可以手动配置https协议端口:

nginx['listen_port'] = 443 所以无论是http和https的端口都是同一个配置,gitlab容器中nginx只会监听该端口,然后根据external_url配置的协议进行判断。

 

6.3、若是nginx['listen_port'] = 443,指定的是https端口,则外部不能通过http协议访问了,因为nginx并没有监听额外的http协议端口。但是可以将http请求重定向到https请求上,配置:

nginx['redirect_http_to_https'] = true

nginx['redirect_http_to_https_port'] = 8081

注意:8081是gitlab容器使用的http协议端口,并不是映射的宿主机端口。

 

6.4、https协议ssl证书指定,gitlab.rb配置文件中设置ssl证书的位置:

nginx['ssl_certificate'] = "/etc/gitlab/ssl/selfcert.crt"

nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/selfcert.key"

默认情况下gitlab容器会去容器目录/etc/gitlab/ssl下加载证书文件,会根据external_url中设置的域名进行加载,如:external_url "http://gitlab.example.com",则默认加载的证书文件为:

nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"

nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"

注意:要移除ssl证书秘钥中密码短语,以及ssl证书目录的访问权限,默认目录为/etc/gitlab/ ssl,设置权限为600:

sudo mkdir -p /etc/gitlab/ssl

sudo chmod 700 /etc/gitlab/ssl

 

6.5、https配置示例:

external_url "https://192.168.146.128:18443"

nginx['listen_port'] = 8443

nginx['redirect_http_to_https'] = true

nginx['redirect_http_to_https_port'] = 8081

nginx['ssl_certificate'] = "/etc/gitlab/ssl/selfcert.crt"

nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/selfcert.key"

如上:gitlab容器使用的https端口是8443,映射到宿主机上的18443端口,则外部可以通过地址:https://192.168.146.128:18443访问gitlab

gitlab容器监听的http重定向端口是8081,映射到书主机的18081上后,当外部访问http://192.168.146.128:18081时,则会重定向到https访问地址:https://192.168.146.128:18443

 

6.6、SSL自签证书生成:

1. 创建 Private Key

sudo openssl genrsa -des3 -out /etc/gitlab/ssl/192.168.146.128.key 2048

记住输入的密码(Pass phrase)

2. 生成 Certificate Request

sudo openssl req -new -key /etc/gitlab/ssl/gitlab.domain.com.key -out /etc/gitlab/ssl/gitlab.domain.com.csr

注: 第一步和第二部可以合并成一条命令

openssl req -nodes -newkey rsa:2048 -keyout gitlab.domain.com.key -out gitlab.domain.com.cs

3. 移除Private Key 中的密码短语

sudo cp -v /etc/gitlab/ssl/gitlab.domain.com.{key,original}

sudo openssl rsa -in /etc/gitlab/ssl/gitlab.domain.com.original -out /etc/gitlab/ssl/gitlab.domain.com.key

sudo rm -v /etc/gitlab/ssl/gitlab.domain.com.original

 

4. 创建证书

sudo openssl x509 -req -days 1460 -in /etc/gitlab/ssl/gitlab.domain.com.csr -signkey /etc/gitlab/ssl/gitlab.domain.com.key -out /etc/gitlab/ssl/gitlab.domain.com.crt

 

5. 移除证书请求文件

sudo rm -v /etc/gitlab/ssl/gitlab.domain.com.csr

 

7、Gitlab git ssh端口配置:

gitlab容器使用22作为ssh协议的端口,gitlab界面clone地址也默认是22端口,若是gitlab容器映射到宿主机的端口不是22,则需要手动配置:

gitlab_rails['gitlab_shell_ssh_port'] = 8022

注意:这里配置是ssh协议22端口映射到宿主机上的端口。

 

git ssh key设置。。。。

 

https://www.jianshu.com/p/4111534b339f

https://docs.gitlab.com/omnibus/docker/#run-gitlab-ce-on-public-ip-address

https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https

https://docs.gitlab.com/omnibus/settings/smtp.html

https://www.cnblogs.com/int32bit/p/5310382.html

https://www.iyunv.com/thread-433644-1-1.html

https://www.jianshu.com/p/aa307ee95442

https://www.cnblogs.com/amoyzhu/p/7250964.html

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐