• 使用Docker中部署GitLab 避坑指南


    容器化的世界中,Docker已经成为了我们部署和管理应用程序的首选工具。然而,在使用Docker部署GitLab时,我们可能会遇到一些问题,本文将为你提供一份详细的避坑指南。网上的教程有的都没说清楚,或者干脆是错的。摸索了好几个小时,才知道为啥要这么做。

    安装docker

    1. 这一步自行百度,不细说了。

    docker 安装gitlab社区版

    1. 直接执行docker pull gitlab/gitlab-ce:latest命令拉取最新的镜像
    docker pull gitlab/gitlab-ce:latest
    
    • 1
    1. 把容器跑起来
     docker run -d --name gitlab --privileged=true --restart always -p 9922:22 -p 9980:9980 -v /home/gitlab/etc:/etc/gitlab -v /home/gitlab/log:/var/log/gitlab -v /home/gitlab/opt:/var/opt/gitlab gitlab/gitlab-ce
    
    • 1
    //对命令的解释
     docker run -d 
     --name gitlab //指定容器名称
     --privileged=true //指定容器可以获得root权限
     --restart always //指定意外停止时自动重启
     -p 9922:22 //指定ssh clone时候的端口
     -p 9980:9980 //指定http访问时的端口
     -v /home/gitlab/etc:/etc/gitlab //挂载配置文件目录出来
     -v /home/gitlab/log:/var/log/gitlab 
     -v /home/gitlab/opt:/var/opt/gitlab 
     gitlab/gitlab-ce
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    1. 在宿主机直接修改/home/gitlab/etc/gitlab.rb文件
    #这一步决定了以http方式clone时的地址和端口号
    external_url 'http://192.168.1.11:9980' 
    #这一步决定了你在浏览器打开时要访问什么端口
    nginx['listen_port'] = 9980
    
    #ssh 的配置
    #ssh连接地址
    gitlab_rails['gitlab_ssh_host'] = '192.168.1.11'
    # ssh连接端口
    gitlab_rails['gitlab_shell_ssh_port'] = 9922
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 重启容器,让配置生效
    docker restart gitlab
    
    • 1

    注意事项

    如果是按照上述教程安装的gitlab,则不需要看下边的了。

    这都是血泪的教训

    1. 首先,我们需要明确一点,如果你不打算使用80端口访问GitLab,那么在执行docker run命令的时候,一定要让访问端口容器内部和外部的保持一致。否则,这将会给你带来不必要的麻烦。也就是说假如你想用9980这个端口访问你的gitlab,那就映射宿主机的9980端口到容器的9980端口,并修改gitlab.rb文件中nginx的监听端口为9980.否则你还要进容器修改运行时配置文件gitlab.yml,这个文件本身就是由gitlab.rb文件映射得来的。所以我不明白为什么那么多网上的教程用其他端口映射容器内的80,再去容器里修改配置是图啥。
    2. 你还需要修改nginx的监听端口,将nginx[‘listen_port’]设置为9980。这样,nginx就能正确地将流量转发到你的GitLab实例上。这个是默认监听容器内80端口的,记好了是容器内,所以这个根据我们的映射规则,一定要修改为我们映射的9980端口。你问我用其他端口映射容器内80,nginx就监听80不行吗,当然行啦,但是你clone的时候就会发现,哎,这个clone地址怎么没有端口号。然后就又陷入了要去容器里修改gitlab.yml的怪圈。
  • 相关阅读:
    mysql—面试50题—1
    Vue3:父组件向子组件传值(Props)
    线性筛求欧拉函数前n个和
    Python集合类型详解(一)——集合定义与集合操作符
    【leetcode】【2022/8/12】1282. 用户分组
    JVM垃圾回收
    如何自己开发一个前端监控SDK
    C语言--指针与数组--遍历数组的n种方式【详细】
    一篇带你搞定⭐《生产环境JVM日志配置》⭐
    给爷肝!Alibaba架构师纯手工打造神仙级“2022版Java面试手册”
  • 原文地址:https://blog.csdn.net/qq_39195042/article/details/136261074