阅读 669

超详细docker + nginx + Jenkins+gitlab教程

本文基于力在构建前端自动化部署。部署项目到指定的服务器,建立centeOs服务器上

1.准备软件工具

  1. xshell  地址:xshell.en.softonic.com/
  2. xftp   地址:www.netsarang.com/en/xftp-dow…  

   以上安装 一路next到底  两个工具用于连接和操作安装服务器内软件以及执行命令。

   如果对命令熟悉可以忽略xftp  xftp一般用于查看文件 上传文件 下载文件  编辑文档等等界面化操作

   3.进入xftp界面进行xftp配置 点击新建

  4.配置

  

5.确定后点击连接

 6.xshell的步骤同上一模一样不在举例

此时就连接上服务器了。

2.安装docker

  1. 进入xshell

2.安装docker依赖

yum install -y yum-utils device-mapper-persistent-data lvm2
复制代码

3.添加docker软件源信息

sudo yum-config-manager --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
复制代码

4.安装dockerCE

 sudo yum install docker-ce
复制代码

5.docker服务启动与关闭

sudo systemctl enable docker // 设置开机自启
sudo systemctl start docker //  启动docker
sudo systemctl stop docker //关闭docker restart 重启
复制代码

3.安装docker-compose

docker-compose 是用于定义和运行多容器 Docker 应用程序的工具。通过compose进行启动docker内容的镜像或工具,运行定义都在docker-compose.yml的文件中进行管理

compose的下载方法:

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


sudo chmod +x /usr/local/bin/docker-compose //执行此步骤升级compose命令 不升级需要进入到compose的目录里执行命令才会生效
docker-compose -v //查看是否安装完毕
复制代码

4.安装Jenkins,nginx,gitlab镜像

docker pull nginx
docker pull jenkins/jenkins:lts 
docker pull gitlab/gitlab-ce
复制代码

为了配合compose,以及方便管理以上三个镜像的文件 我们统一把他们建立在/home /docker的文件下

cd home/
mkdir //通过mkdir 建立目录如下

home
 docker
 + jenkins
   + jenkins_home 
 + nginx
 + gitlab  //gitlab 文件存放
 + compose //管理docker-compose.yml 后续会提到
 + webserver //用于项目发布的地方
复制代码

5.配置gitlab

  1.通过如下命令来启动安装gitlab

注意的是我们的Gitlab的http服务运行在宿主机的1080端口上,这里我们将Gitlab的配置,日志以及数据目录映射到了宿主机的指定文件夹下,防止我们在重新创建容器后丢失数据。

//我们使用的是yml启动 这个方式就不要用了  如果不是yml方式可以用
docker run --detach \  --publish 10443:443 --publish 1080:80 --publish 1022:22 \  --name gitlab \  --restart always \  --volume /home/docker/gitlab/config:/etc/gitlab \  --volume /home/docker/gitlab/logs:/var/log/gitlab \  --volume /home/docker/gitlab/data:/var/opt/gitlab \  gitlab/gitlab-ce:latest
复制代码

 2.访问gitlab

   访问地址:http://192.168.181.101:1080/

    gitlab的启动时间较慢需要等待 如果进入可能会报502 的错误

  

  3.配置root密码

    ** 第一次访问如果有重置密码的操作即可在界面上操作完登录即可**

     

  ** 如果没有重置密码的界面进入即使登录页面,那么我就要找到gitlab的安装文件**

  进入

/home/docker/gitlab/config 进入此目录后
复制代码

找到如下文件右键用文档编辑器打开

找到 password 复制后面的密码 回到gitlab登录界面,将此密码粘贴进去。账号是root

4.创建项目,群组

接下来就是普通的项目创建了,就不在描述了。只提一个问题就是生成的git地址如果出现乱码的现象,记得修改如下文件内容的external_url字段

到此gitlab创建完成

6.在compose下新建文件docker-compose.yml

    建议通过本机电脑创建docker-compose.yml文档  如图

建立好后 通过xshell拖拽到compose文件下

docker-compose的编写内容如下,仅供参考

version: '3'
services:                                      # 集合
  docker_jenkins:
    user: root                                 # 为了避免一些权限问题 在这我使用了root
    restart: always                            # 重启方式
    image: jenkins/jenkins:lts                 # 指定服务所使用的镜像 在这里我选择了 LTS (长期支持)
    container_name: jenkins                    # 容器名称
    ports:                                     # 对外暴露的端口定义
      - 8081:8080
      - 50000:50000
    volumes:                                   # 卷挂载路径
      - /home/docker/jenkins/jenkins_home/:/var/jenkins_home  # 这是我们一开始创建的目录挂载到容器内的jenkins_home目录
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker                # 这是为了我们可以在容器内使用docker命令
      - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
  docker_nginx:
    restart: always
    image: nginx
    container_name: nginx
    ports:
      - 80:80
      - 433:433
    volumes:
      - /home/docker/nginx/conf:/etc/nginx
      - /home/docker/nginx/logs:/var/log/nginx
      - /home/docker/webserver/vue3-demo/dist:/usr/share/nginx/html
  docker_gitlab:
    restart: always
    image: gitlab/gitlab-ce
    container_name: gitlab
    ports:
      - 10443:443
      - 1080:80
      - 1022:22
    volumes: #数据卷的意思 即数据缓存 即使源文件丢失 在右侧的文件会缓存之前的信息
      - /home/docker/gitlab/config:/etc/gitlab
      - /home/docker/gitlab/logs:/var/log/gitlab
      - /home/docker/gitlab/data:/var/opt/gitlab

docker-compose up -d //执行启动
docker-compose stop //停止
复制代码

以上可以看出

Jenkins 配置在8081端口

nginx 配置在80端口

gitlab 配置在 1080端口

7.配置Jenkins

   1.进入Jenkins界面:http://192.168.181.194:8081

    

2.安装插件

   选择推荐安装后 开始漫长的等待

3.Manage Plugins

   jenkins中Manage Plugins搜索以下插件gitlabPublish Over SSHnodejs并安装

  

安装完成后配置nodejs环境和ssh参数 在首页选择global tool Configuration>NodeJS选择自动安装和对应的nodejs版本号,选择成功后点击保存

配置ssh信息,Manage Jenkins>configure System填写服务器的相关信息

配置完保存

8.docker内的nginx配置

将容器内的配置文件拷贝到指定目录

docker container cp nginx:/etc/nginx /home/docker/nginx/
cd /home/docker/nginx/
mv nginx conf
复制代码

找到nginx.conf

更改nginx配置

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
server{
  listen  80;
  root /usr/share/nginx/html;
  index index.html index.htm;
}
}
复制代码

配置完成重新执行下

docker-compose stop
docker-compose up -d
复制代码

9.Jenkins和gitlab关联

回到xshell执行 

ssh-keygen -t rsa
复制代码

执行完毕后找到id_rsa  如果进入root中没有显示.ssh的目录 通过手写到路径中即可查看

将生成的密钥id_rsa复制粘贴到jenkins中的凭证

配置完保存

登陆gitlab,在gitlab中配置id_rsa.pub公钥

将ssh填入 其余项可不填   点击addkey保存

新建项目 选择第一个自由风格项目

 配置gitlab信息

配置成功后,还需要到gitlab中增加对应的钩子。记下上图的webhookURL(红线框出)和secret token值,到gitlab中进行配置。

构建环境及配置

remote 是webserver下的项目目录

构建

最后显示成功

然后访问nginx配置的地址 即可看见

文章分类
前端
文章标签