Docker搭建GitLab

浅浅的花香味﹌ 2023-06-16 15:58 87阅读 0赞

转载二篇文章

  • Docker搭建GitLab:https://segmentfault.com/a/1190000019019854
  • Centos搭建GitLab:https://segmentfault.com/a/1190000019019787
一、安装

一般会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级

  1. docker pull gitlab/gitlab-ce:11.6.4-ce.0
  2. # 通过docker run中加入环境变量,取名为gitlab
  3. docker run --detach \ # 后台运行 -d
  4. # --hostname song.local \ # 指定容器域名,未知功能:创建镜像仓库的时候使用到
  5. -p 8443:443 \ # 将容器内443端口映射到主机8443,提供https服务
  6. -p 80:80 \ # 将容器内80端口映射到主机8080,提供http服务
  7. -p 10022:22 \ # 将容器内22端口映射到主机1002,提供ssh服务
  8. --name gitlab \ # 指定容器名称
  9. --restart=unless-stopped \ # 容器运行中退出时(不是手动退出),自动重启
  10. --volume /var/lib/docker/volumes/gitlab-data/etc:/etc/gitlab \ # 将本地/var/lib/docker/volumes/gitlab-data/etc挂载到容器内/etc/gitlab
  11. --volume /var/lib/docker/volumes/gitlab-data/log:/var/log/gitlab \ # 将本地将本地/var/lib/docker/volumes/gitlab-data/log挂载到容器内/var/log/gitlab
  12. --volume /var/lib/docker/volumes/gitlab-data/data:/var/opt/gitlab \ # 将本地将本地/var/lib/docker/volumes/gitlab-data/data挂载到容器内/var/opt/gitlab
  13. gitlab/gitlab-ce:11.6.4-ce.0 # 镜像名称:版本

为了方便日后启动,创建一个启动脚本:gitlab-docker-restart.sh,代码如下:

  1. #!/bin/bash
  2. serverName="gitlab"
  3. imageName="gitlab/gitlab-ce:11.6.4-ce.0"
  4. function runServer(){
  5. docker run --detach \
  6. -p 8443:443 \
  7. -p 80:80 \
  8. -p 10022:22 \
  9. --name ${ serverName} \
  10. --volume /var/lib/docker/volumes/gitlab-data/etc:/etc/gitlab \
  11. --volume /var/lib/docker/volumes/gitlab-data/log:/var/log/gitlab \
  12. --volume /var/lib/docker/volumes/gitlab-data/data:/var/opt/gitlab \
  13. -v /etc/localtime:/etc/localtime \
  14. --restart=unless-stopped \
  15. ${ imageName}
  16. }
  17. runningCount=`docker ps -f status=running -f status=restarting | grep -w ${ serverName} |wc -l`;
  18. if [[ ${ runningCount} > 0 ]];then
  19. echo "docker restart 重启项目:${serverName}"
  20. docker restart ${ serverName}
  21. exit 0
  22. fi
  23. serverCount=`docker ps -f status=exited -f status=created | grep -w ${ serverName} |wc -l`;
  24. # 判断是否已经启动过,且端口为默认端口
  25. if [[ ${ serverCount} > 0 ]];then
  26. if [[ ${ serverCount} > 1 ]]; then
  27. echo "Error : 查找到多个 ${serverName} 容器,请手动启动"
  28. exit 1
  29. else
  30. echo "docker start 启动项目:${serverName}"
  31. docker start ${ serverName}
  32. fi
  33. else
  34. name=${ imageName%%:*}
  35. tag=${ imageName##*:}
  36. # 判断是否有该镜像
  37. imageCount=`docker images | grep -w ${ name} | wc -l`;
  38. if [[ ${ imageCount} > 0 ]];then
  39. echo "docker run 第一次启动项目: ${imageName}"
  40. runServer
  41. else
  42. echo "Error : 还没有该镜像"
  43. exit 1
  44. fi
  45. fi

将 gitlab-docker-restart.sh赋予执行权限:chmod +x gitlab-docker-restart.sh
之后直接执行 gitlab-docker-restart.sh 即可完成gitlab的重启

二、配置
  1. # 修改gitlab.rb配置文件
  2. $ vim /var/lib/docker/volumes/gitlab-data/etc/gitlab.rb # 编辑gitlab.rb文件
  3. ## GitLab NGINX
  4. nginx['listen_port'] = 80 # gitlab nginx 端口。默认端口为:80
  5. ## GitLab Unicorn
  6. unicorn['listen'] = 'localhost'
  7. unicorn['port'] = 8080 #默认是8080端口
  8. ## GitLab URL 配置http协议所使用的访问地址
  9. external_url 'http://song.local' # clone时显示的地址,gitlab 的域名
  10. # 配置ssh协议所使用的访问地址和端口
  11. gitlab_rails['gitlab_ssh_host'] = 'song.local'
  12. gitlab_rails['gitlab_shell_ssh_port'] = 10022

退出容器后,重启容器:docker restart gitlab

假如你将gitlab配置文件已经挂载到外部存储路径下,只要在相应目录(如这里的/srv/gitlab/config)下修改gitlab.rb文件,并重启容器就可。

将容器时间和host在一个时区-v /etc/localtime:/etc/localtime

三、访问

访问 http://127.0.0.1:80,系统默认的管理员账号为 root,第一次访问 GitLab,会要求初始化管理员账号的密码。

发表评论

表情:
评论列表 (有 0 条评论,87人围观)

还没有评论,来说两句吧...

相关阅读