docker-compose安装gitlab,配置ssh和https
前言
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是宿主机的路径,另外邮件配置是当有一些操作的时候系统会使用这个邮件配置来发送邮件到指定的邮箱
配置宿主机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
安装成功后会在对应的目录下生成数据,日志,配置等文件
配置:
数据:
日志:
注意到生成的数据文件中有一个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