草庐IT

Docker 快速部署gitlab + gitlab-runner

新时代的老古董 2023-05-25 原文

一、概述

        为了方便做一些的测试,我一般不会选择直接在服务器上部署gitlab,那太浪费资源了。一般直接用docker起gitlab,这样即快速便捷,又节约资源。

二、安装docker

        安装docker 的方法很多,这里我就不过多阐述了,我选择了最懒的办法,直接通过yum安装。

#  安装依赖环境
[root@docker ~]#  yum -y install yum-utils device-mapper-persistent-data lvm2

#  配置阿里云YUM源
[root@docker ~]#  yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#  安装docker
[root@docker ~]#  yum -y install docker-ce

#  设置开机自启动
[root@docker ~]#  systemctl enable docker

#  配置阿里云docker镜像源
[root@docker ~]#  mkdir -p /etc/docker
[root@docker ~]#  tee /etc/docker/daemon.json << EOF
>  {
>    "registry-mirrors": ["https://******.mirror.aliyuncs.com"]
>  }
>  EOF
[root@docker ~]#  cat /etc/docker/daemon.json 

#  启动docker
[root@docker ~]#  systemctl start docker 

#  查看docker是否安装完成
[root@docker ~]#  docker -v

Docker version 20.10.17, build 100c701

三、启动gitlab

        拉取gitlab镜像,并把gitlab的80,443,22端口和关键的目录映射到宿主机上。注意可以

        -d 选项指让容器在后台运行。-p 端口映射,主机端口:容器端口,分别把容器内443、80、22端口映射到宿主机的443、8082、222端口。(直接复制CSDN上的命令,可能会报错,不是命令有问题,而是CSDN上块的编码格式有问题。手敲就好了)

[root@docker ~]# docker pull gitlab/gitlab-ce
[root@docker ~]# docker run -d  -p 443:443 -p 8082:80 -p 222:22 --name gitlab  -v /data/gitlab/config:/etc/gitlab  -v /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

四、修改配置gitlab

        1. 获取gitlab初始密码,因为我在启动容器的时候映射了配置文件目录,就直接在宿主机上搜密码了。gitlab 的账号是 root,通过初始密码登入gitlab。

[root@docker ~]# grep Password /data/gitlab/config/initial_root_password
#          2. Password hasn't been changed manually, either via UI or via command line.
Password: jWx7wxw1uVYzPV52WU3F+sUMUT5RLBvBAhupBGcXkHk=

        2. 登录后先修改root密码, Menu >>  Admin >> Users >> 编辑,有个password,输入新的密码,然后Save changes 。保存完成后,用新密码登录即可。

 ​​​​​​

       

        3.  这里还没结束,你创建一个new project,你会发现,clone地址url 是容器的ID号,但我们改成宿主机IP地址。不然就无法拉取项目代码。进入宿主机的 /data/gitlab/config/ 目录(config目录映射的是哪个目录就进哪个目录)。修改gitlab.rb 文件的内容。

 [root@docker ~]# cd /data/gitlab/config/
[root@docker config]# ls 
gitlab.rb              ssh_host_ecdsa_key      ssh_host_ed25519_key.pub  trusted-certs
gitlab-secrets.json    ssh_host_ecdsa_key.pub  ssh_host_rsa_key
initial_root_password  ssh_host_ed25519_key    ssh_host_rsa_key.pub


[root@docker config]# vim gitlab.rb

external_url 'http://192.168.194.23:8082'     

#  配置外部机器访问的ip地址或域名,注意这里的端口号是容器内部80端口映射到主机上的端口号,如果不修改此行,则clone 的http地址会失败。而且gitrunner连接时也会失败。

gitlab_rails['gitlab_ssh_host'] = '192.168.194.23'      # 配置ssh 主机IP地址
gitlab_rails['gitlab_shell_ssh_port'] = 222                  # 配置ssh端口

nginx['listen_port'] = 80             # 配置nginx 端口号,如果不配,会发现gitlab无法访问。因为它会默认使用上面 external_url 配置的端口号作为gitlab的nginx监听端口。

 [root@docker config]# docker restart  容器ID           # 重启容器

        4. 再次点开项目,查看clone地址,可以看到之前的容器ID已经变成宿主机的IP地址了。而且ssh 和http端口号也都变成了宿主机的端口号了。

五、docker 部署 gitlab-runner

        1. GitLab-Runner是配合GitLab-CI进行使用的。一般地,GitLab里面的每一个工程都会定义一个属于这个工程的软件集成脚本,用来自动化地完成一些软件集成工作。当这个工程的仓库代码发生变动时,比如有人push了代码,GitLab就会将这个变动通知GitLab-CI。这时GitLab-CI会找出与这个工程相关联的Runner,并通知这些Runner把代码更新到本地并执行预定义好的执行脚本。

        2. 用 docker 部署 gitlab-runner。官方文档上有两种启动方式,分别是使用系统本地目录挂载启动和docker 卷启动,我这里用系统本地目录挂载。

        3. 在启动runner 时可以加“--ip” 选项指定容器IP。我这里没加。

详见官网:Run GitLab Runner in a container | GitLab

[root@docker ~]#  docker pull gitlab/gitlab-runner:latest

[root@docker ~]#  docker run -d --name gitlab-runner --restart always  -v /srv/gitlab-runner/config:/etc/gitlab-runner  -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest 

       

六、注册runner

        1. 查看runner 的token。

        2. 注册runner,进入容器注册,也可以不进入容器注册。我选择的是进入容器注册。

root@8db9c442c584:/# gitlab-runner register

Enter the GitLab instance URL (for example, https://gitlab.com/):    # 输入gitlab url

http://172.17.0.3/ci           #  注意,这里的url写的是gitlab容器的IP地址,不是服务器IP
Enter the registration token:        # 输入runner 的 token
NNv2TXxEqDswX5Px4jbu
Enter a description for the runner:       #  输入runner名(随意吧)
[8db9c442c584]: test
Enter tags for the runner (comma-separated):     # 输入runner标签
test
Registering runner... succeeded                     runner=NNv2TXxE
Enter an executor: custom, docker, docker-ssh, virtualbox, docker+machine, docker-ssh+machine, kubernetes, parallels, shell, ssh:        # 输入执行模式
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!                                 # 完成设置

        3. 注册完成后,我们回gitlab 页面,项目的CI/CD中,查看Runner,可以看到runner已关联到此项目。或者通过管理员账号看。到此gitrunner注册成功。

有关Docker 快速部署gitlab + gitlab-runner的更多相关文章

  1. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  2. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  3. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  4. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  5. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  6. Ruby,使用包含 TK GUI 的 ocra 部署一个 exe - 2

    Ocra无法处理需要“tk”的应用程序require'tk'puts'nope'用奥克拉http://github.com/larsch/ocra不起作用(如链接中的一个问题所述)问题:https://github.com/larsch/ocra/issues/29(Ocra是1.9的"new"rubyscript2exe,本质上它用于将rb脚本部署为可执行文件)唯一的问题似乎是缺少tcl的DLL文件我不认为这是一个问题据我所知,问题是缺少tk的DLL文件如果它们是已知的,则可以在执行ocra时将它们包括在内有没有办法知道tk工作所需的DLL依赖项? 最佳答

  7. ruby-on-rails - NameError(未初始化常量 Unzipper::Zip)但仅在 Heroku 部署(Rails)上 - 2

    我有一个类unzipper.rb,它使用Rubyzip解压文件。在我的本地环境中,我可以成功解压缩文件,而无需使用require'zip'明确包含依赖项但是在Heroku上,我得到一个NameError(uninitializedconstantUnzipper::Zip)我只能通过使用明确的require来解决问题:为什么这在H​​eroku环境中是必需的,但在本地主机上却不是?我的印象是Rails自动需要所有gem。app/services/unzipper.rbrequire'zip'#OnlyrequiredforHeroku.Workslocallywithout!class

  8. ruby - 将 Gitlab 从 9.3.7 更新到 9.3.8 安装 re2 时出错 - 2

    我们在Ubuntu14.04和Gitlab9.3.7上运行,运行良好。我们正在尝试更新到Gitlabv9.3.8的最新安全补丁,但它给我们这个错误:Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension.currentdirectory:/home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/re2-1.0.0/ext/re2/usr/local/bin/ruby-r./siteconf20170720-19622-15i0edf.rbextconf.rbcheckingformain(

  9. ruby - 如何以表格格式快速打印 Ruby 哈希值? - 2

    有没有办法快速将表格格式的ruby​​哈希打印到文件中?如:keyAkeyBkeyC...1232343451253474456...其中散列的值是不同大小的数组。还是使用双循环是唯一的方法?谢谢 最佳答案 试试我写的这个gem(在表中打印散列、ruby对象、ActiveRecord对象):http://github.com/arches/table_print 关于ruby-如何以表格格式快速打印Ruby哈希值?,我们在StackOverflow上找到一个类似的问题:

  10. ruby - Sinatra + Heroku + Datamapper 使用 dm-sqlite-adapter 部署问题 - 2

    出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,这发生在我打开任何URL时-而不是在gitpush本身期间。我构建了一个默认的Facebook应用程序。gem文件:source:gemcuttergem"foreman"gem"sinatra"gem"mogli"gem"json"gem"httparty"gem"thin"gem"data_mapper"gem"heroku"group:productiondogem"pg"gem"dm-postgres-adapter"endgroup:development,:t

随机推荐