需求概述
现在有一台windows10的机器,需要在这台机器上部署一个gitlab社区版,网络比较特殊,不能使用DHCP,使用自定义ip访问gitlab
方案分析
由于gitlab-ce不能部署在windows环境里,故使用linux环境(以下使用ubuntu)
对于ubuntu的环境,初步考虑可能的三种方案
- 使用双系统,或重装ubuntu单系统
- 使用windows的wsl子系统
- 使用虚拟机
假设使用双系统,如果后续有其他业务需要使用windows作为生产环境,双系统就无法完成了;wsl子系统和虚拟机理论上都可以使用,但是博主认为wsl的稳定性可能不太好并且对wsl了解的还不够深入,只简单测试过运行docker容器,所以打算使用vmware的ubuntu虚拟机
接下来使用docker容器的方式部署gitlab,挂载好目录的话可以方便之后的可能的迁移和测试
那么问题来了,假设已经在机器的vmware中的ubuntu虚拟机部署好了gitlab,对于局域网下其他的机器该如何访问呢
如果图方便可以在vmware虚拟机中直接设置网络为桥接模式,虚拟机的ip直接映射到了机器上,但是我们这里需要自定义ip,就不能使用桥接模式DHCP生成的ip了(当然桥接模式的ip应该也可以自定义)。如果不使用桥接模式,而使用NAT模式,则只有本机器内访问虚拟机,其他机器是访问不到这台机器的虚拟机的
所以可以使用NAT模式+vmware的端口转发,这个情况下同一个局域网内的其他机器,通过访问机器上我们自定义的ip+端口,可以把该访问转发到机器内虚拟机ip的对应端口
当网络设置好了,22端口可能会出问题,因为虚拟机的ssh服务默认占用了22端口,而git提交和其他操作也需要使用22端口,所以在docker容器启动时我们映射的端口就不能为22,此时我们需要修改gitlab的git操作的端口,比如为2222(容器内仍为22),我们在端口转发时转发到虚拟机的2222端口即可(可参考下图)