美文网首页DockerIT必备技能
docker + Jenkins + gogs 自动化部署

docker + Jenkins + gogs 自动化部署

作者: 雨田君的记事本 | 来源:发表于2020-09-23 09:11 被阅读0次
安装 docker
# 下载自动安装脚本
curl -fsSL get.docker.com -o get-docker.sh

# 执行脚本,并指定为阿里的镜像
sh get-docker.sh --mirror Aliyun

# 启动docker
systemctl start docker

# 设置仓库镜像地址,可以加速下载镜像
vi /etc/docker/daemon.json
# 写入内容
{
    "registry-mirrors": [
        "https://3laho3y3.mirror.aliyuncs.com"
    ]
}

# 重启docker
systemctl daemon-reload
systemctl restart docker

# 设置开机启动
systemctl enable docker
安装 docker-composer
# 下载
curl -L https://github.com/docker/compose/releases/download/1.27.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# 添加执行权限
chmod +x /usr/local/bin/docker-compose

安装 htop、nginx、unzip、git
yum install -y htop nginx unzip git
安装portainer,用于在线客户化管理docker
# 创建数据卷
docker volume create portainer_data

# 启动portainer容器
docker run -d -p 9999:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --name=portainer --restart=always portainer/portainer-ce

# 新建 /etc/nginx/conf.d/portainer.conf,写入
server {
  listen  80;
  server_name testportainer.xxx.com;

  location / {
    proxy_pass   http://127.0.0.1:9999;
    proxy_set_header    X-Real-IP        $remote_addr;
    proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header    HTTP_X_FORWARDED_FOR $remote_addr;
    proxy_set_header    X-Forwarded-Proto $scheme;
    proxy_redirect      default;
  }

  location /api/websocket/ {
    proxy_pass http://127.0.0.1:9999/api/websocket/;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
  }

}

打开浏览器,进入127.0.0.1:9999 或者 testportainer.xxx.com 就可以进入portainer的管理界面了

使用docker运行redis
# 新建 /root/docker/redis/docker-compose.yml
version: "3"
services: 
  redis:
    image: redis:5
    container_name: my_redis
    command: redis-server /usr/local/etc/redis/redis.conf
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - ./data:/data:cached
      - ./redis.conf:/usr/local/etc/redis/redis.conf:cached
    logging: 
      driver: "json-file"
      options: 
        max-size: "500m"
  
# 运行
docker-compose up -d --build
使用docker运行mysql
# 新建 /root/docker/mysql/docker-compose.yml
version: "3"
services: 
  mysql:
    image: mysql:8
    container_name: mysql
    command: mysqld --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=mysql888
    volumes:
      - ./data:/var/lib/mysql:cached
      - ./conf:/etc/mysql/conf.d:cached
    security_opt:
      - seccomp:unconfined
    logging: 
      driver: "json-file"
      options: 
        max-size: "500m"
      
# 运行
docker-compose up -d --build

# 设置允许远程访问
use mysql;
update user set host='%' where user ='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
生成ssh密钥,免密拉取代码
# 生成密钥
ssh-keygen -t rsa -C "source@xx.com"

# 将id_rsa.pub内容添加到代码服务器
cd ~/.ssh/
cat id_rsa.pub
使用docker安装Jenkins
# 新建 /root/docker/jenkins/docker-compose.yml
version: "3"
services: 
  jenkins:
    image: jenkinsci/blueocean
    container_name: jenkins
    restart: always
    ports:
      - "49999:8080"
      - "50000:50000"
    environment:
      JAVA_OPTS: "-Duser.timezone=Asia/Shanghai"
    volumes:
      - ./data:/var/jenkins_home:cached
    logging: 
      driver: "json-file"
      options: 
        max-size: "500m"

# 运行
docker-compose up -d --build

# 解决权限错误问题
chown -R 1000:1000 data

权限问题解决之后,Jenkins会自动运行,并打印出一串随机密码


密码

打开浏览器进入127.0.0.1:49999, 输入日志中的密码完成账号初始化


初始化账号

选择要安装的插件


选择要安装的插件

安装插件


进入插件管理

安装publish over ssh插件


安装publish over ssh插件

配置publish over ssh插件


配置publish over ssh插件

拉到最下面,新增服务器


新增服务器

配置 gogs webhook

  1. 过滤分支,只处理dev分支,
  2. 设置参数构建,区分测试和正式,这个参数后面的publish over ssh 插件要用


    image.png

设置构建后操作


image.png

点击高级按钮,设置把branch参数传入


image.png

同样在ssh server选项中也点击高级,并设置label为test,表示如果构建的时候选择test,则会进入当前这个server,这样就可以针对不同的构建参数选择不同的主机进行相关操作。需要注意Exec command 的命令是到远程服务器上执行的,而不是Jenkins所在的机器。

配置完毕,开始构建测试吧


image.png

可以看到默认是构建test,这个参数就是我们刚刚配置的。

设置钩子,提交代码之后触发自动更新


image.png image.png

相关文章

网友评论

    本文标题:docker + Jenkins + gogs 自动化部署

    本文链接:https://www.haomeiwen.com/subject/aiybyktx.html