一、使用Docker搭建GitLab
1:安装
docker run --detach \ # 后台运行-d
-p 8443:443 \ # 容器443端口映射到主机8443端口用于https
-p 1080:80 \ # 容器80端口映射到主机1080端口用于http
-p 1022:22 \ # 容器22端口映射到主机1022端口用于ssh
--name gitlab \ # 指定容器名称
--volume /var/lib/docker/volumes/gitlab-data/etc:/etc/gitlab \ # 挂载将本地挂载到容器 本地:容器
--volume /var/lib/docker/volumes/gitlab-data/log:/var/log/gitlab \
--volume /var/lib/docker/volumes/gitlab-data/data:/var/opt/gitlab \
-v /etc/localtime:/etc/localtime \ # 同步主机时区
--restart=unless-stopped \ # 容器运行中非手动退出时自动重启
gitlab/gitlab-ce
# docker-compose 方式
version: "3"
services:
gitlab:
image: gitlab/gitlab-ce
container_name: gitlab
ports:
- 8443:443
- 1080:80
- 1022:22
volumes:
- /etc/localtime:/etc/localtime:ro
- ./services/gitlab/etc:/etc/gitlab:rw
- ./services/gitlab/data:/var/opt/gitlab:rw
- ./logs/gitlab:/var/log/gitlab:rw
restart: always
logging:
driver: "json-file"
options:
max-size: "500m"
networks:
my_bridge:
aliases:
- gitlba
environment:
TZ: "Asia/Shanghai"
# SVN配置 https://blog.csdn.net/yeqinghanwu/article/details/126984838
# 创建管理账号docker exec -t svn-server htpasswd -cb /etc/subversion/passwd <username> <password>
# 管理地址ip:3080/svnadmin 仓库ip:3080/svn/项目路径
svn:
image: elleflorio/svn-server:latest
container_name: svn
ports:
- 3080:80
- 3690:3690
volumes:
- /etc/localtime:/etc/localtime:ro
- ./services/svn/config:/etc/subversion:rw
- ./services/svn/data:/home/svn:rw
restart: always
logging:
driver: "json-file"
options:
max-size: "500m"
networks:
my_bridge:
aliases:
- svn
environment:
TZ: "Asia/Shanghai"
networks:
my_bridge:
driver: bridge
2:创建启动脚本方便以后启动
#!/bin/bash
serverName="gitlab"
imageName="gitlab/gitlab-ce"
function runServer(){
docker run --detach \
-p 8443:443 \
-p 1080:80 \
-p 1022:22 \
--name ${serverName} \
--volume /var/lib/docker/volumes/gitlab-data/etc:/etc/gitlab \
--volume /var/lib/docker/volumes/gitlab-data/log:/var/log/gitlab \
--volume /var/lib/docker/volumes/gitlab-data/data:/var/opt/gitlab \
-v /etc/localtime:/etc/localtime \
--restart=unless-stopped \
${imageName}
}
runningCount=`docker ps -f status=running -f status=restarting | grep -w ${serverName} |wc -l`;
if [[ ${runningCount} > 0 ]];then
echo "docker restart 重启项目:${serverName}"
docker restart ${serverName}
exit 0
fi
serverCount=`docker ps -f status=exited -f status=created | grep -w ${serverName} |wc -l`;
# 判断是否已经启动过,且端口为默认端口
if [[ ${serverCount} > 0 ]];then
if [[ ${serverCount} > 1 ]]; then
echo "Error : 查找到多个 ${serverName} 容器,请手动启动"
exit 1
else
echo "docker start 启动项目:${serverName}"
docker start ${serverName}
fi
else
name=${imageName%%:*}
tag=${imageName##*:}
# 判断是否有该镜像
imageCount=`docker images | grep -w ${name} | wc -l`;
if [[ ${imageCount} > 0 ]];then
echo "docker run 第一次启动项目: ${imageName}"
runServer
else
echo "Error : 还没有该镜像"
exit 1
fi
fi
3:配置gitlab
vim /var/lib/docker/volumes/gitlab-data/etc/gitlab.rb
nginx['listen_port'] = 80 # gitlab nginx 端口,默认80
external_url 'http://ip:1080' # 配置http协议使用的访问地址
gitlab_rails['gitlab_ssh_host'] = 'ip' #配置ssh协议使用的访问地址
gitlab_rails['gitlab_shell_ssh_port'] = 1022 #配置ssh协议使用的访问端口
修改默认头像地址
gitlab_rails[gravatar_plain_url]=http://sdn.geekzu.org/avatar/%hash?s=%size&d=identicon
gitlab_rails[gravatar_ssl_url]=https://sdn.geekzu.org/avatar/%hash?s=%size&d=identicon
修改完成后重启 docker restart gitlab
4:管理员密码修改
第一次访问时会要求修改初始化账号root密码
如果后期忘记密码也可以修改密码
# 进入docker gitlab
docker exec -it gitlab /bin/bash
# 执行命令
gitlab-rails console -e production
user = User.where(id: 1).first
user.password="密码"
user.password_confirmation="密码"
user.save!
quit
5:配置发送邮件(邮箱需要开启smtp服务)
vim /var/lib/docker/volumes/gitlab-data/etc/gitlab.rb
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "email@163.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_domain'] = "smtp.163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
gitlab_rails['gitlab_email_from'] = 'email@163.com'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_display_name'] = 'gitlab'
gitlab_rails['gitlab_email_reply_to'] = 'email@163.com'
gitlab_rails['gitlab_email_subject_suffix'] = '[GITLAB]'
docker exec -it gitlab /bin/bash # 进入容器发送测试
gitlab-rails console
ActionMailer::Base.delivery_method显示邮件发送协议
ActionMailer::Base.smtp_settings查看邮件配置
Notify.test_email('收件人邮箱', '标题', '内容').deliver_now
二、直接在主机上安装
1:安装相关依赖
sudo yum install -y curl policycoreutils-python openssh-server
systemctl enable sshd
systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
systemctl restart firewalld
2:添加镜像仓库
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
EXTERNAL_URL="http://gitlab.example.com" yum install -y gitlab-ce
以上方法如果慢可以修改国内源
ls -l /etc/yum.repos.d/
mv /etc/yum.repos.d/gitlab_gitlab-ce.repo /etc/yum.repos.d/gitlab_gitlab-ce.repo.bak #备份
vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck-0
enabled=1
yum makecache
yum install gitlab-ce
3:配置并启动
gitlab-ctl reconfigure # 首次启动也要用此命令。重新加载配置并启动
gitlab-ctl start # 启动
gitlab-ctl stop # 停止
4:修改配置文件
gitlab-ctl stop
vim /etc/gitlab/gitlab.rb 配置项可参考上方docker方式安装
gitlab-ctl restart postgresql
gitlab-ctl reconfigure
gitlab-ctl start
5:卸载
gitlab-ctl stop
rpm -e gitlab-ce
ps aux | grep gitlab # 查看守护进程
kill -9
find / -name gitlab | xargs rm -rf # 删除所有包含gitlab的文件