docker部署gitLab


安装docker

# yum update -y
# yum install -y yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum -y install docker-ce
# systemctl enable docker
# systemctl start docker
# docker version

命令出现docker版本号,至此docker安装成功。


安装gitLab

拉取GitLab镜像

    # docker pull gitlab/gitlab-ce

启动一个gitLab容器

    # docker run -d --hostname gitlab.example.com\
    -p 443:443 -p 8181:80 -p 2222:22 \
    --name gitlab \
    --restart always \
    -v /srv/gitlab/config:/etc/gitlab \
    -v /srv/gitlab/logs:/var/log/gitlab \
    -v /srv/gitlab/data:/var/opt/gitlab \
    -v /etc/localtime:/etc/localtime
    gitlab/gitlab-ce:latest

可以在/root目录下,新建一个gitlab_startup.sh文件,用以存储上述命令。

查看所有的容器

    docker ps

如果出现gitlab的容器,则表示gitLab启动成功。


GitLab配置

gitLab本身内置了nginx,使用内置nginx进行设置。配置文件是/etc/gitlab/gitlab.rb

进入目录/srv/gitlab/config,修改配置文件

    `# vi gitlab.rb`
    对应修改参数:

    external_url "https://gitlab.example.com"
    unicorn["port"]=8080
    nginx["redirect_http_to _https"]=true
    nginx["http2_enable"]=false

然后重启容器,docker restart gitlab(或者进入docker 容器内,docker exec -it gitlab bash[进入容器],然后在容器内执行gitlab-ctl reconfigure[重启gitlab])。完成以上配置。由于我是内网建立的,所以我在服务器端和本地端加入两个指令,如果想要外部网址访问,自行配置即可。

配置服务器端和本地windows

- 服务器
        `vi /etc/hosts`
        在文件中新增如下一条数据:
        [内网IP] gitlab.example.com
-   本地机器(windows)
        进入C:/windows/system32/dirvers/etc
        打开hosts文件,新增如下一条语句
        [内网IP] gitlab.example.com

添加SSL证书支持HTTPS

SSL证书包括:
1、CA证书,也叫根证书或者中间级证书。如果是单向https认证的话,该证书是可选的。不安装CA证书的话,浏览器默认是不安全的。
2、服务器证书,必选项。通过key,证书请求文件csr,再通过CA证书签名,生成服务器证书。
3、客户端证书,可选项。若有客户端证书则是双向https验证。

以上所有证书都可以自己生成

文件后缀:
 linux系统是不以后缀名来判断文件类型的,但是为了我们能够更好地判断文件用途,所以添加各种后缀。以下是约定成俗的后缀。
    *.key:密钥文件,一般是SSL中的私钥;
    *.csr:证书请求文件,里面包含公钥和其他信息,通过签名后就可以生成证书;
    .crt, .cert:证书文件,包含公钥,签名和其他需要认证的信息,比如主机名称(IP)等。
    *.pem:里面一般包含私钥和证书的信息。

服务器证书的生成
  • 生成服务器私钥

在docker容器内,进入/etc/gitlab目录,新建ssl文件夹,mkdir ssl,进入ssl文件夹,生成服务器私钥openssl genrsa -des3 -out gitlab.example.com.key 1024,输入加密密码,用128位的rsa算法生成密钥,得到gitlab.example.com.key文件。

  • 生成服务器证书请求(CSR)
    openssl req -new -key gitlab.example.com.key -out gitlab.example.com.csr

        在生成这个文件的过程中,有一点需要特别注意,Common Name 填入主机名(或者服务器IP)。
    
  • 生成服务器证书
    如果不使用CA证书,可用以下方式生成。
    openssl req -x509 -days 3650 -key gitlab.example.com.key in gitlab.example.com.csr > gitlab.example.com.crt

用服务器密钥和证书请求生成证书 gitlab.example.com.crt , -days 参数指明证书有效期,单位为天。商业上来说,服务器证书是由通过第三方机构颁发的,该证书由第三方认证机构颁发的。

参考网址:https://www.cnblogs.com/vincentfu/p/5475248.html

Nginx添加SSL支持HTTPS后,脚本启动失败,Enter PEM pass phrase
报错信息如下:
SSL_CTX_use_PrivateKey_file("/etc/gitlab/ssl/gitlab.example.com.key") failed (SSL: error:0906406D:PEM routines:PEM_def_callback:problems getting password error:0906A068:PEM routines:PEM_do_header:bad password read error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib) 

解决办法:
在docker容器,进入ssl文件夹:

    cp gitlab.example.com.key gitlab.example.com.key.org
    openssl rsa -in gitlab.example.com.key.org -out gitlab.example.com.key

替换ssl文件下的key,重启nginx。

参考网址:http://blog.csdn.net/mingjie1212/article/details/54615603

docker容器运行时,-p映射端口报错
报错信息如下:
Error response from daemon: Cannot start container eb9d501f56bc142d9bf75ddfc7ad88383b7388ca6a5959309af2165f1fff6292: iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8081 -j DNAT --to-destination 172.17.0.164:8080 ! -i docker0: iptables: No chain/target/match by that name.

大致为网络问题。

解决办法:
首先进入docker容器内,验证内部网络是否能够ping通宿主机,如果能ping通,即可通过重建dicker0网络恢复。执行以下命令:
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
docker -d
systemctl restart docker

问题即可解决。

参考网址:http://blog.sina.com.cn/s/blog_8e032fb90102xuon.html

访问https://gitlab.example.com页面返回502

解决办法:

进入/srv/gitlab/config/gitlab.rb做出如下修改
unicorn["port"]=8080

参考网址:http://blog.csdn.net/wangxicoding/article/details/43738137

git fetch 出现:SSL certificate problem: self signed certificate错误

解决办法:
进入客户git环境,输入下面程序:
git config http.sslVerify false

参考网址:https://gitlab.com/gitlab-org/gitlab-ce/issues/788

设置SSH方式访问GItLab

修改gitLab配置文件中的变量:

git_rails['gitlab_shell_ssh_port']=2222

此时gitLab的项目SSH路径为ssh://git@gitlab.example.com:2222/wch/wchTest.git

TortoiseGit设置私钥和公钥

因为我采用的TortoiseGit上传代码,所以需要配置TortoiseGit。

  • 在本地电脑(windows),开始菜单的TortoiseGit/PuTTYgen,单击打开软件
  • 单击“Generate”按钮,在等待进度条完成之前,在界面的空白处按住左键拖动鼠标。在等待进度条完成之后显示如下界面。
    这里写图片描述

  • 将上述界面的的公钥,全选复制,保存为authorized_keys。并且单击私钥保存,保存名为”private.ppk”。

  • 进入gitLab界面,然后在“setting”处,“SSH Keys”处,将公钥内容复制到“Key”栏目里,Title为默认,单击“Add key”,及添加了公钥。
  • 进入本地windows的开始菜单,“TortoiseGit/Pageant”,单击“Add key”选择上述生成的私钥“private.ppk”注意文件名需要和公钥的保持一致。
  • 然后需要在新建项目的时候,在TortoiseGit/设置/远端,在putty密钥处加载之前的private.ppk即可。
Logo

更多推荐