当前位置: 首页 > news >正文

使用Docker中部署GitLab 避坑指南

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

安装docker

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

docker 安装gitlab社区版

  1. 直接执行docker pull gitlab/gitlab-ce:latest命令拉取最新的镜像
docker pull gitlab/gitlab-ce:latest
  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
//对命令的解释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. 在宿主机直接修改/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. 重启容器,让配置生效
docker restart gitlab

注意事项

如果是按照上述教程安装的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的怪圈。
http://www.lryc.cn/news/305532.html

相关文章:

  • 我的NPI项目之设备系统启动(八) -- Android14的GKI2.0开发步骤和注意事项
  • 鼠标右键助手专业版 MouseBoost PRO for Mac v3.3.6中文破解
  • React学习计划-react-hooks补充
  • KTV点歌系统vue+springboot音乐歌曲播放器系统
  • vue video 多个视频切换后视频不显示的解决方法
  • 多态与代码屎山
  • Git基本操作(2)
  • 编程笔记 Golang基础 023 切片
  • qt 软件发布(Windows)
  • 《汇编语言》- 读书笔记 - 第11章-标志寄存器
  • 1.QT简介(介绍、安装,项目创建等)
  • 【服务器】服务器推荐
  • 信号系统之线性图像处理
  • uniapp腾讯地图JavaScript Api,H5端和原生APP端可用
  • MyBatisPlus:PG数组类型自动映射问题
  • Data-Shape制作UI节点简介
  • kubernetes负载均衡部署
  • NestJS入门6:日志中间件
  • CommonJS、require、moudle实现两个文件传参
  • 关于php、php-fpm的解释
  • 【CMake】(8)包含库文件
  • 【 JS 进阶 】Web APIs (二)
  • 解决弹性布局父元素设置高自动换行,子元素均分高度问题(align-content: flex-start)
  • 什么是负载均衡集群?
  • 【es6】的新特性
  • Java中的多线程是如何实现的?
  • C++知识点总结(22):模拟算法
  • opengl 学习纹理
  • STM32控制max30102读取血氧心率数据(keil5工程)
  • 高级语言期末2011级A卷