使用Docker 部署GitLab(内置nginx 实现自定义端
2021-02-08 本文已影响0人
xuanhr
安装docker
安装docker根据不同的环境都有非常简单的教程,这里就不重复了。
GitLab 安装
GitLab的安装可以直接run,或者通过docker-compose。这边直接只用Pull拉取。
$ docker pull gitlab/gitlab-ce
$ docker image ls
看到GitLab对应的镜像则证明安装成功
GitLab 配置
docker run --detach \
--publish 8888:8888 --publish 8889:22 \ #指定端口,因为不需要http访问,所以只留了一个映射端口给https使用(默认443,现使用8888)
--hostname gitlab.example.com \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \ #挂载本地目录到容器配置目录
--volume /srv/gitlab/logs:/var/log/gitlab \ #挂载本地目录到容器日志目录
--volume /srv/gitlab/data:/var/opt/gitlab \ #挂载本地目录到容器数据目录
gitlab/gitlab-ce:latest
新建ssl证书目录
mkdir /srv/gitlab/config/ssl
放入申请的ssl证书*.key``*.crt
,如果申请的证书格式是pem
手动修改后缀为crt
即可。
接下来要设置GitLab Config了
所有设置尽量写在gitlab.rb中,有些教程让手动去修改例如nginx的config文件,官方文档中是不推荐这种做法的
sudo vi /srv/gitlab/config/gitlab.rb
external_url "https://gitlab.example.com:8888" #监听的端口号。注意!需要写https!
#nginx['listen_port'] = 8888 #如果在上面的url中写入了端口,则gitlab在配置nginx时会自动设置此值
gitlab_rails['gitlab_shell_ssh_port'] = 8889 #如果自定义了ssh端口,在这设置以后就能在ssh clone地址处正确显示
letsencrypt['enable'] = false #不需要letsencrypt自动签名
nginx['ssl_certificate'] = "/etc/gitlab/ssl/your.crt" #记得修改your.crt至你存放在ssl目录下的crt文件名
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/your.key" #记得修改your.key至你存放在ssl目录下的crt文件名
修改完成后
docker exec -it gitlab bash
进入gitlab容器
gitlab-ctl reconfigure
让gitbal重新读取配置
gitlab-ctl hup nginx
nginx更新配置
好了访问我们的 https://gitlab.example.com:8888
成功~