JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

docker + Jenkins + gogs 自动化部署

wys521 2024-10-26 14:48:05 精选教程 48 ℃ 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

centos8 系统安装的时候可能会报错:

Error: 
 Problem: package docker-ce-3:19.03.13-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package containerd.io-1.2.10-3.2.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.13-3.1.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.13-3.2.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.2-3.3.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.2-3.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.4-3.1.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.5-3.1.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.2.6-3.3.el7.x86_64 is filtered out by modular filtering
  - package containerd.io-1.3.7-3.1.el7.x86_64 is filtered out by modular filtering

centos8默认使用podman代替docker,所以需要containerd.io,那我们就安装一下就好了。

yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.3.7-3.1.el7.x86_64.rpm

安装 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 插件要用

设置构建后操作


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


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


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


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

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


image.png


文章来源:https://www.jianshu.com/p/e575c25fe15e

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表