使用docker-compose部署gitlab

docker-compose.yml 文件配置

使用docker部署gitlab非常简单方便,可以很大程度避免和原本系统上的服务冲突,安装步骤也很简单。

docker的安装可以参考官方文档https://docs.docker.com/。本次部署使用docker-compose,只要配置好doccker-compose.yml文件就可以直接启动gitlab,比在命令行里面修改参数方便多了。docker-compose 的安装参考https://docs.docker.com/compose/install/

docker-compose.yml文件

gitlab:
  container_name: 'gitlab'
  image: 'gitlab/gitlab-ce:latest'
  restart: always
  hostname: 'gitlab.xxxx.cn' #这里配置为gitlab的访问域名
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'https://gitlab.xxxx.cn:9000'  #访问gitlab url,这个是配置到nginx的地址 9000端口号与下面ports的配置一致
      nginx['redirect_http_to_https'] = true           #使用https
      nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.xxxx.cn.crt"      #配置https 证书
      nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.xxxx.cn.key"
      gitlab_rails['gitlab_shell_ssh_port'] = 9002          #配置ssh端口 与ports配置一致

  ports:
    - '9000:9000'
    - '9001:443'
    - '9002:22'
  volumes:
    - '/home/xxxx/docker/gitlab/config:/etc/gitlab'        #配置文件挂载  
    - '/home/xxxx/docker/gitlab/logs:/var/log/gitlab'      #日志文件挂载
    - '/home/xxxx/docker/gitlab/data:/var/opt/gitlab'      #数据文件挂载

上面是gitlab的docker-compose 启动配置文件。创建一个gitlab目录,把该文件放到这个目录下。对于文件挂载,创建config,logs,data三个目录,分别挂载gitlab容器上,参考上面的volumes配置,把目录配置改成自己的。

有个要注意避免的坑。关于端口号,external_url默认使用80端口,如果默认使用80端口,external_url可以不带端口号,然后ports的配置可以是 -’80:80’。如果要使用其他端口,必须在external_url中加上端口号码,然后在ports中配置端口号。比如使用9000端口号,external_url必须是 xxxx:9000, 然后ports 配置成 -‘9000:9000’。因为external_url和ports的端口都是NGINX的端口配置,要一致的。

这里使用了https协议,并开启了ssh端口。

https 配置

使用https需要使用openssl生成自签名证书,一般没有必要去买证书。本次使用一个脚本生成https证书。脚本来自廖雪峰的官方网站

#!/bin/sh

# create self-signed server certificate:

read -p "Enter your domain [www.example.com]: " DOMAIN

echo "Create server key..."

openssl genrsa -des3 -out $DOMAIN.key 1024

echo "Create server certificate signing request..."

SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN"

openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csr

echo "Remove password..."

mv $DOMAIN.key $DOMAIN.origin.key
openssl rsa -in $DOMAIN.origin.key -out $DOMAIN.key

echo "Sign SSL certificate..."

openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt

echo "TODO:"
echo "Copy $DOMAIN.crt to /etc/nginx/ssl/$DOMAIN.crt"
echo "Copy $DOMAIN.key to /etc/nginx/ssl/$DOMAIN.key"
echo "Add configuration in nginx:"
echo "server {"
echo "    ..."
echo "    listen 443 ssl;"
echo "    ssl_certificate     /etc/nginx/ssl/$DOMAIN.crt;"
echo "    ssl_certificate_key /etc/nginx/ssl/$DOMAIN.key;"
echo "}"

在上面创建的congfig目录下新建一个ssl目录,把生成的https证书复制到ssl目录下。

启动gitlab

  1. 配置好的docker-compose.yml 文件。
  2. 创建配置文件同父目录下的 config,data,logs目录。
  3. 生成HTTPS证书
  4. 把HTTPS证书复制到config/ssl目录下

准备好以上全部的配置和目录之后,可以启动gitlab了。

前端进程启动gitlab,cd 到docker-compose.yml 所在的目录,执行命令。

docker-compose up

后端进程启动

docker-compose up -d

发表评论

电子邮件地址不会被公开。 必填项已用*标注