docker mysql 无权限_docker + Jenkins + gogs 自动化部署

安装 docker

# 下载自动安装脚本curl -fsSL get.docker.com -o get-docker.sh# 执行脚本,并指定为阿里的镜像sh get-docker.sh --mirror Aliyun# 启动dockersystemctl start docker# 设置仓库镜像地址,可以加速下载镜像vi /etc/docker/daemon.json# 写入内容{    "registry-mirrors": [        "https://3laho3y3.mirror.aliyuncs.com"    ]}# 重启dockersystemctl daemon-reloadsystemctl 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.ymlversion: "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.ymlversion: "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.ymlversion: "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会自动运行,并打印出一串随机密码

05ea73581646525b4ea6b6985d226aa9.png

密码

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

867b31e455cf9ca17071b6332b462859.png

初始化账号

选择要安装的插件

e89e408ca34f0d8dde55fa4c639d696f.png

选择要安装的插件

安装插件

d20a867b1a4d14c6c28f9d2552933222.png

进入插件管理

安装publish over ssh插件

e30cc7394e660941e5d05c5d04d0fb83.png

安装publish over ssh插件

配置publish over ssh插件

e3e2e52f4e44f7ad934cce6e7258e0be.png

配置publish over ssh插件

拉到最下面,新增服务器

54c366fadb1f012da88fc310fa5d9b5c.png

新增服务器

配置 gogs webhook

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

设置构建后操作

4c2a49bc9ede536b1d07ec86256de533.png

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

470b2600c7df32249123200223662e76.png

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

d9a25c0fb7d63698971d966e4c64647f.png

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

1becac66685a2fac7ab3a8d4c77f61d6.png

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

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

b0753593824bb7cee5d5e2c5407718d3.png

image.png

b031ef94771c38b89e25200142cbbd61.png


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值