使用Docker安装gitlab

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

编辑重启容器的脚本

#!/bin/bash
serverName="gitlab"
imageName="gitlab/gitlab-ce:latest"
function runServer(){
docker run --detach \
    -p 8443:443 \
    -p 80:80 \
    -p 10022: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

修改配置

# 修改gitlab.rb配置文件
$ vim /var/lib/docker/volumes/gitlab-data/etc/gitlab.rb # 编辑gitlab.rb文件
	
## GitLab URL 配置http协议所使用的访问地址
external_url 'http://gitlab.local' # clone时显示的地址,gitlab 的域名

# 配置ssh协议所使用的访问地址和端口
gitlab_rails['gitlab_ssh_host'] = 'gitlab.local'
gitlab_rails['gitlab_shell_ssh_port'] = 10022

参考:https://segmentfault.com/a/1190000019019854