Docker 搭建 Gitlab 代码存储服务

Docker 搭建 Gitlab 代码存储服务
1. Docker 搭建 Gitlab 代码存储服务1. git 与 gitlab 的区别git 与 gitlab 的区别git 是一种版本控制的系统用于代码的存储和 版本控制。gitlab 是基于 git 实现的 web 远程仓库用于给开发团队提供项目代码的存储分享发布的云存储场所。处 gitlab 之外还有 githubgitee 等工具。2. gitlab 镜像在线安装查找 gitlab 镜像# 查找 gitlab 镜像 docker search gitlab在线拉取 gitlab 镜像# 在线拉取 gitlab 镜像 docker pull gitlab/gitlab-ce:latest离线安装因为 gitlab 镜像体积大所以在线拉取时间会很长所以如果有离线安装包也可以进行离线安装避免长时间等待。先在有 gitlab 镜像的计算机上进行导出再将镜像拷贝到目标计算机上进行导入即可。# 导出镜像 docker save gitlab -o mygitlab.tar # 导入镜像 docker load -i mygitlab.tar3. 启动 gitlab 容器执行命令docker run \ -itd \ -p 9980:80 \ -p 9922:22 \ -v /home/gitlab/etc:/etc/gitlab \ -v /home/gitlab/log:/var/log/gitlab \ -v /home/gitlab/opt:/var/opt/gitlab \ --restart always \ --privilegedtrue \ --name mygitlab \ gitlab/gitlab-ce命令解释-i以交互模式运行容器通常与 -t 同时使用命令解释-t为容器重新分配一个伪输入终端通常与 -i 同时使用-d后台运行容器并返回容器ID-p 9980:80将容器内80端口映射至宿主机9980端口这是访问gitlab的端口-p 9922:22将容器内22端口映射至宿主机9922端口这是访问ssh的端口-v /home/gitlab/etc:/etc/gitlab将容器/etc/gitlab目录挂载到宿主机/home/gitlab/etc目录下若宿主机内此目录不存在将会自动创建其他两个挂载同这个一样--restart always容器自启动--privilegedtrue让容器获取宿主机root权限--name gitlab设置容器名称为gitlabgitlab/gitlab-ce镜像的名称这里也可以写镜像ID4. 修改配置修改 gitlab.rb 配置# 进入容器内部 docker exec -it mygitlab /bin/bash # 修改 gitlab.rb 配置 vim /etc/gitlab/gitlab.rb # 加入如下配置 # gitlab访问地址可以写域名。如果端口不写的话默认为80端口 external_url http://192.168.47.128 # ssh主机ip gitlab_rails[gitlab_ssh_host] 192.168.47.128 # ssh连接端口 gitlab_rails[gitlab_shell_ssh_port] 9922 # 让配置生效 gitlab-ctl reconfigure注意 ip 地址不要盲目复制要按照实际的配置写。修改 gitlab.yml 配置# 修改 http 和 ssh 配置 vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml # 文件内修改内容 gitlab: host: 192.168.47.128 port: 9980 # 这里改为9980 https: false重启# 重启gitlab gitlab-ctl restart # 退出容器 exit至此 gitlab 已经在 Linux 上面部署成功了可以访问 192.168.47.128:9980 进行验证。2. Gitlab 修改管理员登录密码1. gitlab 修改管理员登录密码1. 进入 gitlab 容器# 进入容器内部 docker exec -it mygitlab /bin/bash2. 进入 gitlab 控制台# 进入 gitlab 控制台 gitlab-rails console -e production3. 查询 id 为 1 的用户为超级管理员# 查询 id 为 1 的用户, 超级管理员 user User.where(id:1).first4. 修改密码# 修改密码 user.passwordabc1234565. 保存并退出# 保存并退出 user.save! exit访问 gitlab用户名 root密码 abc1234563. Gitlab 创建个人账号企业中项目通常是多人协作完成的因此需要给每个项目成员都创建个人账号进行权限分级控制。1. gitlab 创建个人账号1. root 账号登录2. 创建群组3. 创建用户4. 重置用户密码5. 将用户添加到群组6. 登录个人账号并重置密码至此gitlab 个人账号就创建完成了。4. Git 本地安装及环境配置1. git 本地安装git 下载地址https://git-scm.com/install/git 安装比较简单一直点击 next 按钮即可2. git 环境配置配置环境变量将 git 安装目录下的 bin 目录配置为环境变量使用 cmd 查看版本信息# 查看版本信息 git --versiongit 本地配置1. 生成 ssh 密钥# 1、生成ssh密钥连续三次回车默认配置 ssh-keygen -t rsa -C my_emailqq.com2. git 用户的配置首次使用需要配置# 2、全局配置git用户名邮箱 git config --global user.email my_emailxx.com git config --global user.name your_name3. 查看公钥和私钥# 查看私钥 cat /c/Users/26490/.ssh/id_rsa # 查看公钥 cat /c/Users/26490/.ssh/id_rsa.pub4. 配置个人账号的私钥和公钥添加公钥5. Git 代码托管1. git 常用命令新建代码库# 在当前目录, 新建代码库 git init # 新建一个目录, 并初始化为代码库 git init [project-name] # 克隆一个项目到本地 git clone [url]配置# 显示当前的Git配置 git config --list # 编辑Git配置文件 git config -e [--global] # 设置提交代码时的用户信息 git config [--global] user.name [name] git config [--global] user.email [email address]增加删除文件# 添加指定文件到暂存区 git add [file1] [file2] ... # 添加指定目录到暂存区包括子目录 git add [dir] # 添加当前目录的所有文件到暂存区 git add . # 添加每个变化前都会要求确认 # 对于同一个文件的多处变化可以实现分次提交 git add -p # 删除工作区文件并且将这次删除放入暂存区 git rm [file1] [file2] ... # 停止追踪指定文件但该文件会保留在工作区 git rm --cached [file] # 改名文件并且将这个改名放入暂存区 git mv [file-original] [file-renamed]代码提交# 提交暂存区到仓库区 git commit -m [message] # 提交暂存区的指定文件到仓库区 git commit [file1] [file2] ... -m [message] # 提交工作区自上次commit之后的变化直接到仓库区 git commit -a # 提交时显示所有diff信息 git commit -v # 使用一次新的commit替代上一次提交 # 如果代码没有任何新变化则用来改写上一次commit的提交信息 git commit --amend -m [message] # 重做上一次commit并包括指定文件的新变化 git commit --amend [file1] [file2] ...远程同步# 下载远程仓库的所有变动 git fetch [remote] # 显示所有远程仓库 git remote -v # 显示某个远程仓库的信息 git remote show [remote] # 增加一个新的远程仓库并命名 git remote add [shortname] [url] # 取回远程仓库的变化并与本地分支合并 git pull [remote] [branch] # 上传本地指定分支到远程仓库 git push [remote] [branch] # 强行推送当前分支到远程仓库即使有冲突 git push [remote] --force # 推送所有分支到远程仓库 git push [remote] --all2. 自动化测试项目推送远程仓库1. 新建 .gitignore 文件.gitignore 的作用就是在执行 git add 操作的时候忽略某些文件常用的 python 项目模板# system or IDE generated files __debug_bin .vscode/ .idea/ .DS_Store *.bak .commit.txt !.gitkeep # python files venv __pycache__ *.pyc dist *.egg-info .python-version .pytest_cache说明* 表示所有! 表示不忽略2. 项目推送到远程仓库1. 新建项目项目创建好之后记录克隆地址2. 创建 git 仓库打开项目创建 git 仓库执行 add将项目添加到暂存区执行 commit 提交到本地仓库推送到远程仓库将项目的克隆连接放到 URL 输入框注意填写 URL 的时候一定要带上 SSH:// 协议否则无法推送成功创建合并请求批准合并请求立即合并完成之后代码合并到主分支