使用Docker 部署GitLab(内置nginx 实现自定义端口的https访问)

安装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
成功~

你可能感兴趣的:(使用Docker 部署GitLab(内置nginx 实现自定义端口的https访问))