docker部署gitlab(完整版)

388 阅读3分钟

环境

服务端:centos7

客户端:window

在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh连接,开发人员只需提交代码,就可以进行项目文件上传,打包镜像,发布运行测试

一、centos7上安装docker和docker-compose

安装docker:

1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过uname -r命令查看你当前的内核版本

1 $ ``uname -r

2、使用root权限登录 Centos。确保 yum 包更新到最新。

1 $ ``sudo yum update

3、卸载旧版本(如果安装过旧版本的话)

1 $ ``sudo yum remove docker docker-common docker-selinux docker-engine

4、安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

1 $ ``sudo yum ``install -y yum-utils device-mapper-persistent-data lvm2

5、设置yum源

1 $ ``sudo yum-config-manager --add-repo https:``//download``.docker.com``/linux/centos/docker-ce``.repo

image.png

6、可以查看所有仓库中所有docker版本,并选择特定版本安装

| 1 | $ yum list docker-ce --showduplicates | ``sort -r | | - | --------------------------------------------------------

image.png

7、安装docker

123 $ ``sudo yum ``install docker-ce ``#由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0$ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce``如果错误:``问题: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but

image.png

8、启动并加入开机启动

12 $ ``sudo systemctl start docker`` $ ``sudo systemctl ``enable docker

9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

1$ docker version

image.png

10、建议更换docker的镜像源:

1.修改或创建daemon.json文件:vi /etc/docker/daemon.json\

将以下配置写入到文件中,保存并退出(不会操作的百度下vi命令吧):

12345{   ``"registry-mirrors"``: [``"http://hub-mirror.c.163.com"``] }

2.重启docker:systemctl restart docker

安装docker-compose:

参考官网:docs.docker.com/compose/ins…

1、Run this command to download the latest version of Docker Compose:

1sudo curl -L ``"https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o ``/usr/local/bin/docker-compose

2、Apply executable permissions to the binary:

1sudo chmod +x ``/usr/local/bin/docker-compose

二、拉取gitlab中文版镜像

地址:hub.docker.com/r/twang2218…

1、利用xshell+xftp在centos7中创建存储日志、配置、数据的文件夹

  文件夹结构如下:

12345gitlab``  ``-config``  ``-logs``  ``-data``docker-compose.yml

2、利用docker-compose.yml启动

version: '3'

services:

  ``gitlab:

   ``image: 'twang2218/gitlab-ce-zh:11.1.4'

   ``restart: unless-stopped

   ``hostname: 'gitlab.domain.com'

   ``container_name: gitlab

   ``environment:

    ``TZ: 'Asia/Shanghai'

    ``GITLAB_OMNIBUS_CONFIG: |

     ``external_url 'http://gitlab.domain.com/'

     ``registry_external_url 'https://gitlab.domain.com'

     ``gitlab_rails['gitlab_shell_ssh_port'] = 1022

     ``gitlab_rails['time_zone'] = 'Asia/Shanghai'

     ``# gitlab_rails['smtp_enable'] = true

     ``# gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"

     ``# gitlab_rails['smtp_port'] = 465

     ``# gitlab_rails['smtp_user_name'] = "xxxx@xx.com"

     ``# gitlab_rails['smtp_password'] = "password"

     ``# gitlab_rails['smtp_authentication'] = "login"

     ``# gitlab_rails['smtp_enable_starttls_auto'] = true

     ``# gitlab_rails['smtp_tls'] = true

     ``# gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'

   ``ports:

    ``- '80:80'

    ``- '443:443'

    ``- '1022:22'

   ``volumes:

    ``- ./data:/var/opt/gitlab

    ``- ./config:/etc/gitlab

    ``- ./logs:/var/log/gitlab

如果你的服务器有域名,将上面的gitlab.domain.com替换为实际域名。

实验时,也可以直接修改/etc/hosts方便测试。比如:127.0.0.1 gitlab.example.com

3、cd到gitlab目录下执行docker-compose up -d启动,稍作等待。。

4、启动完毕后打开浏览器访问gitlab.domain.com

image.png

5、SSH 连接GitLab

首先我们需要得到一个SSH Key,输入

1cat ~/.``ssh``/id_rsa``.pub

如果出现 ssh-rsa打头的字符,说明本地已经有了SSH Key那我们可以直接拿来用,如果没有则需要我们自己创建一个SSH Key。

image.png

6、创建SSH Key

输入以下命令创建一个SSH Key。

1ssh`` -keygen -t rsa -C ``"your.email@example.com" -b 4096

完成之后可以再输入 上面的cat命令 或者pbcopy直接复制生成的ssh key。

1pbcopy < ~/.``ssh``/id_rsa``.pub

在GitLab中账号-》设置中找到 SSH Keys中添加这个Key即可。

image.png

7、SSH 连接 1022 端口

正常情况下你已经可以通过git命令来连接我们部署的gitlab,但这里不一样的是我们把容器的 22端口映射到了 host的 1022上,我们需要指定端口来进连接。

1ssh -p 1022 git@gitlab.domain.com

同时还需要更改GitLab的配置文件中的 ssh端口(如果上面配置过就不用了),否则GitLab中为我们生成的项目连接地址会连接不上。/gitlab/config/gitlab.rb

1gitlab_rails[``'gitlab_shell_ssh_port'``] = 1022

更改完ssh端口之后重启gitlab容器,之后我们的项目 ssh连接址会变为:

1ssh``:``//git``@gitlab.domain.com:1022``/test/projectname``.git

到这里我们已经完成了GitLab的部署。