docker-compose配置gitlab与nginx使用https协议进行代码管理

本文介绍的是在通过编写docker-compose.yml文件启动gitlab服务,并使用https协议进行代码的加密传输。

环境:阿里云centos7.3服务器;docker 18.03.1-ce;gitlab-ce-zh。本服务器绑定了域名code.example.com

相关文章链接:《还不会安装docker?这里帮你搞定》、《如何安装docker-compose》。

阿里云的https申请需要在阿里云控制台进行申请,然后可以下载配置nginx的秘钥。最终可以得到两个文件,一个是***.pem,一个是***.key。将其上传到服务器的/data/software/docker-nginx/cert中(随便选择文件路径都可以,这里只是方便理解后文配置文件中的路径),并将pem文件的后缀修改为crt,即将***.pem文件修改为***.crt

直接上docker-compose.yml:

version: '3'
services:
  gitlab:
    container_name: gitlab # gitlab 容器名
    image: 'twang2218/gitlab-ce-zh:latest' #镜像名称,如果本地镜像没有,会自动从远端pull
    restart: always # 是否在docker重启时自动重启
    hostname: 'code.example.com'
    environment:
       TZ: 'Asia/Shanghai'
       GITLAB_OMNIBUS_CONFIG: |
           external_url 'https://code.example.com'
           nginx['enable'] = true
           nginx['client_max_body_size'] = '250m'
           nginx['redirect_http_to_https'] = true
           nginx['ssl_certificate'] = "/etc/ssl/cert/CodeExampleCn.crt" # 加密证书文件
           nginx['ssl_certificate_key'] = "/etc/ssl/cert/CodeExampleCn.key"
           nginx['ssl_protocols'] = "TLSv1.1 TLSv1.2"
           nginx['ssl_session_cache'] = "builtin:1000  shared:SSL:10m"
           nginx['listen_addresses'] = ["0.0.0.0"]
           nginx['http2_enabled'] = true
    volumes:
      - /data/software/gitlab-ce-zh/config:/etc/gitlab
      - /data/software/gitlab-ce-zh/logs:/var/log/gitlab
      - /data/software/gitlab-ce-zh/data:/var/opt/gitlab
      - /data/software/docker-nginx/cert:/etc/ssl/cert
    networks:
      - gitlab_network

  gitlab-system-nginx:  # nginx 反向代理服务
    container_name: gitlab-system-nginx
    depends_on:    # 反向代理依赖的服务名
      - gitlab
    image: nginx:1.18.0
    ports:
      - "443:443"
    volumes:
      - "./nginx-conf-reverse/nginx.conf:/etc/nginx/nginx.conf:ro"  # 此处使用的是相对(docker-compose.yml)路径
      - "/data/software/docker-nginx/cert:/etc/ssl/cert:ro"   # 此处使用的是绝对路径
    networks:  # nginx反向代理使用的网络
      - gitlab_network     # gitlab使用的网络
networks:
  gitlab_network:  

说明:这是针对gitlab和gitlab-system-nginx两个服务和gitlab_network这个网络的配置
  • 在gitlab容器中,启用了自身的nginx,并为其添加ssl证书,证书路径是容器内的路径,所以需要在volumes中设置挂载到宿主机,这样就可以在容器中访问宿主机中的文件。并使用gitlab_network网络
  • 在gitlab-system-nginx中向外部暴露443端口,且声明与gitlab在同一个网络gitlab_network中

在docker-compose.yml的所在目录中建立nginx-conf-reverse文件夹

并在nginx-conf-reverse文件夹中配置nginx.conf文件:


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
		
	server{
		listen      443 ssl http2;    # 监听 443 端口
		listen [::]:443 ssl http2;
		server_name code.zwlys.com;

		ssl_certificate        /etc/ssl/cert/CodeZwlysCn.crt;
		ssl_certificate_key    /etc/ssl/cert/CodeZwlysCn.key;
		ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
		
		location / {
		  proxy_pass https://gitlab;   # 转发给名为 "gitlab" 的 容器
		}
	}

}

在docerk-compose.yml所在目录使用docker-compose up -d命令,在后台启动容器编排。

在用docker ps查看已经运行的容器:


再用浏览器访问https://code.exampe.com即可成功访问gitlab。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值