docker-compose安装gitlab,配置ssh和https

来源:赵克立博客 分类: Docker 标签:gitlabGit发布时间:2020-02-27 19:38:00最后更新:2020-03-03 21:46:28浏览:1916
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2020-03-03 21:46:28
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

前言

gitlab很早已经用了,第一次用的时候就走啦一些坑,最近再次配置gitlab时发现有些坑又踩啦一次,所以这次把docker下安装gitlab的流程给记录下来,最终实现结果为,宿主机nginx服务占用80和443端口,安装gitlab容器后配置支持https和ssh访问。

前期准备

  • 用于访问gitlab的域名 gitlab.test.com

  • 域名的https证书,这个网上有很多免费的,可以找一下

  • 支持smtp发邮件的邮箱,163 qq都可以

  • 一台linux服务器,自行安装好docker和docker-compose

配置参数/文件

docker-compose配置

version: "3"
services:
  gitlab:
    image: gitlab/gitlab-ce:latest
    container_name: gitlab
    restart: always
    hostname: gitlab.test.com
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url "https://gitlab.test.com"
    ports:
      - "10022:22"
      - "10080:80"
      - "10443:443"
    volumes:
      - /root/gitlab/data:/var/opt/gitlab
      - /root/gitlab/logs:/var/log/gitlab
      - /root/gitlab/config:/etc/gitlab
    environment:
      TZ: "Asia/Shanghai"
    networks:
      - default

在/root/gitlab下面创建好需要映射的目录,上面端口我们改为 10080 10022 10443为啦不跟宿主机的冲突

gitlab.rb配置

# 降低内存占用
unicorn['worker_processes'] = 2
postgresql['shared_buffers'] = "128MB"
postgresql['max_worker_processes'] = 8
sidekiq['concurrency'] = 10

# 使用https访问
external_url "https://gitlab.zkeli.com"
nginx['enable'] = true
nginx['client_max_body_size'] = '1024m'
nginx['redirect_http_to_https'] = true
nginx['redirect_http_to_https_port'] = 80
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.test.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.test.com.key"
#
#
# gitlab_rails['smtp_enable'] = true
# gitlab_rails['smtp_address'] = "smtp.qq.com"
# gitlab_rails['smtp_port'] = 465
# gitlab_rails['smtp_user_name'] = "xxxxxxxxxx@qq.com"
# gitlab_rails['smtp_password'] = "quajsqkllubrbcdj"   #开启qq的POP3时得到的密码
# gitlab_rails['smtp_domain'] = "smtp.qq.com"
# gitlab_rails['smtp_authentication'] = "login"
# gitlab_rails['smtp_enable_starttls_auto'] = true
# gitlab_rails['smtp_tls'] = true
# gitlab_rails['gitlab_email_from'] = 'xxxxxxxxxx@qq.com'

# 备份保存7天
gitlab_rails['backup_keep_time'] = 604800

在/root/gitlab/config目录下创建一个ssl目录来放证书,注意:配置文件中的路径是 /etc 这个是容器里的路径,/root/gitlab/config是宿主机的路径,另外邮件配置是当有一些操作的时候系统会使用这个邮件配置来发送邮件到指定的邮箱

2002271582804521251834.png

配置宿主机nginx

配置现有nginx服务去访问gitlab容器的服务,添加站点配置文件,添加域名证书,把http重定向到https,然后去访问容器中的https服务

server {
        listen       80;
        server_name  gitlab.test.com;
        return      301  https://gitlab.test.com$request_uri;
}
server {
        listen       443 ssl;
        server_name  gitlab.test.com;
        # ssl on;
        ssl_certificate      /ssl/1_gitlab.test.com_bundle.crt;
        ssl_certificate_key  /ssl/2_gitlab.test.com.key;

    location / {
        proxy_pass https://gitlab;
    }
}

安装gitlab

一键安装gitlab

docker-compose up -d

安装成功后会在对应的目录下生成数据,日志,配置等文件

配置:

2002271582805178482554.png

数据:

2002271582805264831059.png

日志:

2002271582805300991281.png

注意到生成的数据文件中有一个nginx目录,其时gitlab容器启动后里面是有一个nginx服务的,通过nginx服务来访问gitlab服务,nginx目录中有一些配置信息,这些配置信息是通过检测gitlab.rb文件中的配置自动生成的,所以一般情况下我们不要动它,需要修改一些配置的时候只修改gitlab.rb文件然后重新生成配置,再重启就可以啦,下面是命令

进入gitlab容器

docker exec -it gitlab /bin/sh

重新生成配置

gitlab-ctl reconfigure

重启gitlab服务

gitlab-ctl restart

克隆项目

使用ssh来克隆项目原地址为 git@gitlab.test.com:root/********.git因为修改啦22端口为10022所以地址应该使用 ssh://git@gitlab.test.com:10022/root/********.git

数据备份和恢复

备份数据

docker exec -it gitlab gitlab-rake gitlab:backup:create

恢复数据

gdocker exec -it gitlab gitlab-rake gitlab:backup:restore BACKUP=1530156812_2018_06_28_10.8.4



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python