2024-05-09 10:58:26 +08:00
<!DOCTYPE html>
< html lang = "zh-CN" >
<!DOCTYPE html>
< html lang = "zh-CN" >
< head >
< meta http-equiv = "content-type" content = "text/html; charset=UTF-8" / >
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
< link rel = "icon" href = "/img/logo.png" >
< meta name = "author" content = "浪子" >
< meta name = "subtitle" content = "一个分享自己生活的博客" >
< meta name = "description" content = "曾梦想仗剑走天涯;因太胖放弃原计划." >
< meta name = "keywords" content = ",DIY,黑苹果,分享,自由" >
< link rel = "alternate" href = "/atom.xml " title = "提剑追梦" type = "application/atom+xml" >
< title > EasyPanel:一款使用Docker部署的VPS面板 | 提剑追梦< / title >
< link rel = "stylesheet" href = "/css/style.css" >
< link rel = "stylesheet" href = "/css/partial/dark.css" >
< link rel = "stylesheet" href = "/css/partial/highlight/atom-one-light.css" >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" >
2024-05-09 11:25:52 +08:00
< link rel = "stylesheet" href = "https://cdnjs.sgcd.net/lxgw-wenkai-screen-webfont/lxgwwenkaigbscreen.css" >
2024-05-09 10:58:26 +08:00
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.css" >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/gh/a2396837/CDN@latest/css/iconfont.css" >
< script src = "/js/todark.js" > < / script >
< meta name = "generator" content = "Hexo 6.3.0" > < / head >
< / html >
< div class = "nav index" style = "height: 60px;" >
< div class = "title animated fadeInDown" >
< div class = "layui-container" >
< div class = "nav-title" > < a href = "/" title = "提剑追梦" > 提剑追梦< / a > < / div >
< div class = "nav-list" >
< button > < span class = "" > < / span > < span style = "display: block;" > < / span > < span class = "" > < / span > < / button >
< ul class = "layui-nav" lay-filter = "" >
< li class = "layui-nav-item" >
< a href = "/ " >
< i class = " fab fa-fort-awesome " style = "color: rgb(255 107 107);" > < / i >
< span class = "layui-nav-item-name" > 首页< / span >
< / a >
< / li >
< li class = "layui-nav-item" >
< a href = "/archives/ " >
< i class = " fas fa-archive " style = "color: rgb(10 189 227);" > < / i >
< span class = "layui-nav-item-name" > 归档< / span >
< / a >
< / li >
< li class = "layui-nav-item" >
< a href = "/tags/ " >
< i class = " fas fa-hashtag " style = "color: rgb(254 202 87);" > < / i >
< span class = "layui-nav-item-name" > 标签< / span >
< / a >
< / li >
< li class = "layui-nav-item" >
2024-05-09 11:25:52 +08:00
< a href = "/fcircle/ " >
< i class = " fas fa-heart " style = "color: rgb(29 209 161);" > < / i >
< span class = "layui-nav-item-name" > 朋友圈< / span >
2024-05-09 10:58:26 +08:00
< / a >
< / li >
< li class = "layui-nav-item" >
< a href = "/links/ " >
< i class = " fab fa-weixin " style = "color: hsl(152deg 73% 45%);" > < / i >
< span class = "layui-nav-item-name" > 友链< / span >
< / a >
< / li >
< li class = "layui-nav-item" >
< a href = "/memos/ " >
< i class = " fas fa-coffee " style = "color:#31c7c1;" > < / i >
< span class = "layui-nav-item-name" > 说说< / span >
< / a >
< / li >
< li class = "layui-nav-item" >
2024-05-09 11:25:52 +08:00
< a href = "/about/ " >
< i class = " fab fa-grav " style = "color: rgb(154 106 247);" > < / i >
< span class = "layui-nav-item-name" > 关于< / span >
2024-05-09 10:58:26 +08:00
< / a >
< / li >
< li class = "layui-nav-item" id = "btn-toggle-dark" > 🌙< / li >
< span class = "layui-nav-bar" style = "left: 342px; top: 78px; width: 0px; opacity: 0;" > < / span >
< / ul >
< / div >
< / div >
< / div >
< / div >
< header class = "header" >
< div class = "logo" >
< a href = "/" > < img src = "https://img.imsun.org/avatar.jpg" onerror = this.onerror=null,this.src="/img/loading.gif" > < / a >
< / div >
< / div >
< div class = "motto" >
< span > 曾梦想仗剑走天涯< / span >
< / div >
< div class = "social" >
< a class = "social-icon" href = "https://github.com/jkjoy" target = "_blank" title = "Github" >
< i class = "iconfont icon-GitHub" aria-hidden = "true" > < / i >
< / a >
< a class = "social-icon" href = "mailto:jkjoy@163.com" target = "_blank" title = "Email" >
< i class = "iconfont icon-email" aria-hidden = "true" > < / i >
< / a >
< a class = "social-icon" href = "/atom.xml" target = "_blank" title = "rss" >
< i class = "iconfont icon-rss" aria-hidden = "true" > < / i >
< / a >
< / div >
< / header >
< article id = "post" >
< div class = "post-title" > EasyPanel:一款使用Docker部署的VPS面板< / div >
< div class = "post-meta" >
< div class = "post-meta-item date" >
< span title = "发表于 2024.04.02" > < i class = "far fa-calendar-alt" > < / i > 2024.04.02< / span >
< / div >
< div class = "post-meta-item updated" >
2024-06-18 11:51:31 +08:00
< span title = "更新于 2024.06.18" > < i class = "far fa-calendar-check" > < / i > 2024.06.18< / span >
2024-05-09 10:58:26 +08:00
< / div >
< div class = "post-meta-item categories" >
< i class = "fas fa-inbox article-meta__icon" > < / i > < a href = "/categories/%E5%88%86%E4%BA%AB/" > 分享< / a >
< / div >
< div class = "post-meta-item wordcount" >
< i class = "fas fa-pencil-alt" > < / i > < span class = "post-count" > 588 字< / span >
< i class = "far fa-clock" > < / i > < span class = "post-count" > 2 分钟< / span >
< / div >
< / div >
< div class = "content" >
2024-05-09 20:03:32 +08:00
< blockquote > < h3 > 自动摘要< / h3 >
ai: 这篇文章介绍了EasyPanel, 一款基于docker的可视化面板, 提供免费和付费两种模式。文章主要围绕免费模式进行讲解, 包括安装过程、使用指南以及如何部署应用和服务。文中还具体说明了如何通过模板快速部署常见的应用, 以及如何手动配置和部署不太常见的应用( 如gatus) 。此外, 还提到了EasyPanel的一些优势, 如简便操作、自动处理SSL证书等。
< / blockquote >
2024-05-09 10:58:26 +08:00
< div > < h2 id = "EasyPanel" > < a href = "#EasyPanel" class = "headerlink" title = "EasyPanel" > < / a > EasyPanel< / h2 > < p > 官方网站 < code > EasyPanel.io< / code > < / p >
< p > < code > EasyPanel< / code > 是一款基于< code > docker< / code > 的可视化面板. 拥有< code > 付费< / code > 和< code > 免费< / code > 两种模式< / p >
< p > 本文介绍以免费模式为主(主要是收费不菲)< br > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112071321641777.webp" > < / p >
< p > 从首页的介绍可以看到他的特色就是通过直观的界面部署应用,管理数据库以及签发SSL证书.< / p >
< h3 id = "安装" > < a href = "#安装" class = "headerlink" title = "安装" > < / a > 安装< / h3 > < ul >
< li > 建议在纯净的linux系统下安装< / li >
< / ul >
< p > 通过命令行< / p >
< figure class = "highlight sh" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > curl -sSL https://get.easypanel.io | sh< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 即可完成安装,官方给出的配置要求内存大于2G,根据实测,1G的vps运行起来问题也不大.< / p >
< p > 由于是容器化的部署方式,各个应用之间独立运行.NICE.< / p >
< h3 id = "使用" > < a href = "#使用" class = "headerlink" title = "使用" > < / a > 使用< / h3 > < h4 id = "访问" > < a href = "#访问" class = "headerlink" title = "访问" > < / a > 访问< / h4 > < p > 安装之后通过< / p >
< figure class = "highlight plaintext" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > ip:3000< / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 访问面板,初次访问会要求创建管理员账号和密码.< / p >
< h4 id = "登录" > < a href = "#登录" class = "headerlink" title = "登录" > < / a > 登录< / h4 > < p > 进入面板会发现很简洁< br > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112073049083915.webp" alt = "进入面板" > < / p >
< h4 id = "创建" > < a href = "#创建" class = "headerlink" title = "创建" > < / a > 创建< / h4 > < p > 创建项目点击< code > Create Project< / code > 填写项目名称,确定,进入该项目< / p >
< h4 id = "模板" > < a href = "#模板" class = "headerlink" title = "模板" > < / a > 模板< / h4 > < p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112074114481559.webp" > < / p >
< p > 点击< code > templates< / code > 会发现这里有很多常用的应用模板,只要点击就可以部署.< / p >
< p > 譬如< code > memos< / code > < code > uptime< / code > < code > wordpress< / code > < code > Flarum< / code > < code > GoToSocial< / code > < code > Umami< / code > < code > Vaultwarden< / code > 等上百款应用< / p >
< h4 id = "服务" > < a href = "#服务" class = "headerlink" title = "服务" > < / a > 服务< / h4 > < p > 常见的模板应用大多都是全世界著名的应用.国内的某些应用,或者不是很常见的应用该如何部署< / p >
< p > 此处以< code > gatus< / code > 为例< / p >
< p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112074948886487.webp" > < / p >
< p > 点击< code > APP< / code > ,填写名称,确认 < / p >
< p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112075045277316.webp" > < / p >
< p > 点击< code > General< / code > < br > < code > gatus< / code > 的docker镜像为< code > twinproduction/gatus:latest< / code > < br > 在< code > Docker images< / code > 中填入< code > twinproduction/gatus:latest< / code > < br > 点< code > SAVE< / code > 保存.< br > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112075239607243.webp" > < br > 点击< code > Domain< / code > -< code > ADD Domain< / code > -< code > HOST< / code > 填写域名< / p >
< p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112075722912648.webp" > < / p >
< p > 全部填写完成之后,点< code > SAVE< / code > 保存. < / p >
< p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112080453993746.webp" > < / p >
< p > 点击< code > Advanced< / code > -< code > Mounts< / code > -< code > ADD VOLUME Mounts< / code > < / p >
< p > < code > Name< / code > 为宿主机名称可以自己设置 < / p >
< p > < code > Mount Path< / code > 为Docker< / p >
< p > 挂载目录 < code > /data< / code > < / p >
< p > 点击< code > ADD File Mounts< / code > ,其中 < code > Mount Path< / code > 为挂载路径,此处填写为< code > /config/config.yaml< / code > < / p >
< p > < code > Content< / code > 为yaml格式的配置文件 与 < code > config.yaml< / code > 内容对应 < / p >
< p > 以下为示例内容可自行修改< / p >
< figure class = "highlight yaml" > < table > < tr > < td class = "gutter" > < pre > < span class = "line" > 1< / span > < br > < span class = "line" > 2< / span > < br > < span class = "line" > 3< / span > < br > < span class = "line" > 4< / span > < br > < span class = "line" > 5< / span > < br > < span class = "line" > 6< / span > < br > < span class = "line" > 7< / span > < br > < span class = "line" > 8< / span > < br > < span class = "line" > 9< / span > < br > < span class = "line" > 10< / span > < br > < span class = "line" > 11< / span > < br > < span class = "line" > 12< / span > < br > < span class = "line" > 13< / span > < br > < span class = "line" > 14< / span > < br > < span class = "line" > 15< / span > < br > < span class = "line" > 16< / span > < br > < span class = "line" > 17< / span > < br > < span class = "line" > 18< / span > < br > < span class = "line" > 19< / span > < br > < span class = "line" > 20< / span > < br > < span class = "line" > 21< / span > < br > < span class = "line" > 22< / span > < br > < span class = "line" > 23< / span > < br > < span class = "line" > 24< / span > < br > < span class = "line" > 25< / span > < br > < span class = "line" > 26< / span > < br > < span class = "line" > 27< / span > < br > < span class = "line" > 28< / span > < br > < span class = "line" > 29< / span > < br > < span class = "line" > 30< / span > < br > < / pre > < / td > < td class = "code" > < pre > < span class = "line" > < span class = "attr" > storage:< / span > < / span > < br > < span class = "line" > < span class = "attr" > type:< / span > < span class = "string" > sqlite< / span > < / span > < br > < span class = "line" > < span class = "attr" > path:< / span > < span class = "string" > /data/data.db< / span > < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > < span class = "attr" > ui:< / span > < / span > < br > < span class = "line" > < span class = "attr" > buttons:< / span > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "attr" > name:< / span > < span class = "string" > " Home" < / span > < / span > < br > < span class = "line" > < span class = "attr" > link:< / span > < span class = "string" > " https://www.imsun.org" < / span > < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > < span class = "attr" > endpoints:< / span > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "attr" > name:< / span > < span class = "string" > bloghb< / span > < / span > < br > < span class = "line" > < span class = "attr" > group:< / span > < span class = "string" > core< / span > < / span > < br > < span class = "line" > < span class = "attr" > url:< / span > < span class = "string" > " https://blog.hb.cn" < / span > < / span > < br > < span class = "line" > < span class = "attr" > interval:< / span > < span class = "string" > 3m< / span > < / span > < br > < span class = "line" > < span class = "attr" > conditions:< / span > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "string" > " [STATUS] == 200" < / span > < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "attr" > name:< / span > < span class = "string" > blogcn< / span > < / span > < br > < span class = "line" > < span class = "attr" > group:< / span > < span class = "string" > core< / span > < / span > < br > < span class = "line" > < span class = "attr" > url:< / span > < span class = "string" > " https://blog.asbid.cn" < / span > < / span > < br > < span class = "line" > < span class = "attr" > interval:< / span > < span class = "string" > 3m< / span > < / span > < br > < span class = "line" > < span class = "attr" > conditions:< / span > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "string" > " [STATUS] == 200" < / span > < / span > < br > < span class = "line" > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "attr" > name:< / span > < span class = "string" > blogsd< / span > < / span > < br > < span class = "line" > < span class = "attr" > group:< / span > < span class = "string" > core< / span > < / span > < br > < span class = "line" > < span class = "attr" > url:< / span > < span class = "string" > " https://blog.sd.cn" < / span > < / span > < br > < span class = "line" > < span class = "attr" > interval:< / span > < span class = "string" > 3m< / span > < / span > < br > < span class = "line" > < span class = "attr" > conditions:< / span > < / span > < br > < span class = "line" > < span class = "bullet" > -< / span > < span class = "string" > " [STATUS] == 200" < / span > < / span > < br > < / pre > < / td > < / tr > < / table > < / figure >
< p > 点击< code > SAVE< / code > 保存 < / p >
< p > < img src = "/img/loading.gif" data-src = "https://www.imsun.org/usr/uploads/2024/01/20240112081537297595.webp" > < / p >
< p > 点击< code > Deploy< / code > . < / p >
< p > 完成部署 别忘记在DNS处解析域名< / p >
< h3 id = "gatus演示" > < a href = "#gatus演示" class = "headerlink" title = "gatus演示" > < / a > gatus演示< / h3 > < p > < a target = "_blank" rel = "noopener" href = "https://status.0tz.top/" > https://status.0tz.top/< / a > < / p >
< h2 id = "总结" > < a href = "#总结" class = "headerlink" title = "总结" > < / a > 总结< / h2 > < p > 优势:不用折腾反代,不用担心证书到期,常用应用傻瓜式部署< / p >
< / div >
< div class = "post-copyright" >
< div class = "copyright-item" >
< span > 作者: 浪子< / span >
< / div >
< div class = "copyright-item" >
< span > 链接: < a href = "https://blog.jkjoy.cn/posts/b5a1f33a.html" > https://blog.jkjoy.cn/posts/b5a1f33a.html< / a > < / span >
< / div >
< div class = "copyright-item" >
< span > 声明: 本博客所有文章除特别声明外,均采用许可协议 < a target = "_blank" rel = "noopener" href = "http://creativecommons.org/licenses/by-nc/4.0/" > CC-BY-NC-4.0< / a > 转载请注明出处!< / span >
< / div >
< / div >
< / div >
< div class = "share-reward" >
< div class = "share" >
< div class = "social-share" data-sites = "wechat,weibo,qq" > < / div >
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/social-share.js/dist/css/share.min.css" >
< script src = "https://cdn.jsdelivr.net/npm/social-share.js/dist/js/social-share.min.js" > < / script >
< / div >
< div class = "reward" >
< div style = "padding: 10px 0; margin-left: 20px; width: 90%; text-align: center;" >
< div class = "reward-content" >
< ul id = "donateBox" class = "list pos-a" >
< li id = "PayPal" > < a href = "https://paypal.me/jkjoy" target = "_blank" title = "贝宝" > 贝宝< / a > < / li >
< li id = "AliPay" title = "支付宝" > < img data-img = "https://blogcdn.loliko.cn/ali.png" onerror = this.onerror=null,this.src="/img/loading.gif" > < / img > < / li >
< li id = "WeChat" title = "微信" > < img date-img = "https://blogcdn.loliko.cn/wx.png" onerror = this.onerror=null,this.src="/img/loading.gif" > < / img > < / li >
< / ul >
< div id = "QRBox" class = "pos-f left-100" >
< div id = "MainBox" > < / div >
< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "post_tags" >
< i class = "fas fa-tag" > < / i > < a href = "/tags/VPS/" class = "tag" > VPS< / a >
< i class = "fas fa-tag" > < / i > < a href = "/tags/Docker/" class = "tag" > Docker< / a >
< i class = "fas fa-tag" > < / i > < a href = "/tags/EasyPanel/" class = "tag" > EasyPanel< / a >
< / div >
< div class = "post-nav" >
2024-06-18 11:51:31 +08:00
< div class = "post-nav-prev post-nav-item" >
< a href = "/posts/8bf3d085.html" > 从memos的webhook开始< i class = "fa fa-chevron-left" > < / i > < / a >
< / div >
2024-05-09 10:58:26 +08:00
< div class = "post-nav-next post-nav-item" >
< a href = "/posts/5f4f3026.html" > 巨械师X99主板/E5 2680 V4/RX5600XT 6G/1TB SSD/BCM94360CS[OpenCore引导]< i class = "fa fa-chevron-right" > < / i > < / a >
< / div >
< / div >
2024-05-09 16:55:10 +08:00
< h3 > < i class = "far fa-comment" > < / i > 评论< / h3 >
2024-05-09 11:25:52 +08:00
< div id = "tcomment" > < / div >
2024-05-12 11:16:02 +08:00
< script src = "/js/twikoo.all.min.js" > < / script >
2024-05-09 11:25:52 +08:00
< script >
twikoo.init({
envId: 'https://t.jkjoy.cn',
el: '#tcomment',
})
< / script >
2024-05-09 10:58:26 +08:00
< / article >
< a id = "gotop" href = "javascript:" title = "返回顶部" > < i class = "fa fa-arrow-up" > < / i > < / a >
< div id = "bottom-outer" >
< div id = "bottom-inner" >
© 2020 < i class = "fa fa-heart" id = "heart" > < / i > 浪子
< br >
Powered by
< a target = "_blank" rel = "noopener" href = "http://hexo.io" > hexo< / a > | Theme is < a target = "_blank" rel = "noopener" href = "https://github.com/a2396837/hexo-theme-blank/" > blank< / a >
< div class = "icp-info" >
2024-06-17 17:09:54 +08:00
< a href = "https://beian.miit.gov.cn/" target = "_blank" > 鄂ICP备16022970号-16< / a >
2024-05-09 10:58:26 +08:00
< / div >
< / div >
< / div >
< script src = "https://cdn.jsdelivr.net/npm/layui-src@2.5.5/dist/layui.min.js" > < / script >
< script src = "/js/script.js" > < / script >
< script src = "https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js" > < / script >
< script >
window.lazyLoadOptions = {
elements_selector: 'img',
threshold: 0
}
< / script >
< script src = "https://cdn.jsdelivr.net/npm/vanilla-lazyload/dist/lazyload.iife.min.js" > < / script >
< script >
var images = $('img').not('.nav-logo img').not('.card img').not($('a>img')).not('.reward-content img')
images.each(function (i, o) {
var lazyloadSrc = $(o).attr('data-src') ? $(o).attr('data-src') : $(o).attr('src')
$(o).wrap(`< a href = "${lazyloadSrc}" data-fancybox = "group" data-caption = "${$(o).attr('alt')}" class = "fancybox" > < / a > `)
})
< / script >
< script src = "https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js" > < / script >
< script >
$().fancybox({
selector: '[data-fancybox]',
loop: true,
transitionEffect: 'slide',
protect: true,
buttons: ['slideShow', 'fullScreen', 'thumbs', 'close']
})
< / script >
< script >
jQuery(document).ready(function () {
var QRBox = $('#QRBox');
var MainBox = $('#MainBox');
var AliPayQR = 'https://blogcdn.loliko.cn/ali.png';
var WeChanQR = 'https://blogcdn.loliko.cn/wx.png';
function showQR(QR) {
if (QR) {
MainBox.css('background-image', 'url(' + QR + ')');
}
$('#donateBox').addClass('blur');
QRBox.fadeIn(300, function (argument) {
MainBox.addClass('showQR');
});
}
$('#donateBox>li').click(function (event) {
var thisID = $(this).attr('id');
if (thisID === 'AliPay') {
showQR(AliPayQR);
} else if (thisID === 'WeChat') {
showQR(WeChanQR);
}
});
MainBox.click(function (event) {
MainBox.removeClass('showQR').addClass('hideQR');
setTimeout(function (a) {
QRBox.fadeOut(300, function (argument) {
MainBox.removeClass('hideQR');
});
$('#DonateText,#donateBox,#github').removeClass('blur');
}, 600);
});
});
< / script >
< script src = "https://cdn.jsdelivr.net/npm/instant.page/instantpage.min.js" type = "module" defer > < / script >
< script src = "https://cdn.jsdelivr.net/npm/clipboard@2.0.4/dist/clipboard.min.js" > < / script >
< script >
!function (e, t, a) {
var initCopyCode = function(){
var copyHtml = '';
copyHtml += '< button class = "btn-copy" data-clipboard-snippet = "" > ';
copyHtml += ' < i class = "fa fa-clipboard" > < / i > < span > 复制< / span > ';
copyHtml += '< / button > ';
$(".highlight .code pre").before(copyHtml);
new ClipboardJS('.btn-copy', {
target: function(trigger) {
return trigger.nextElementSibling;
}
});
}
initCopyCode();
}(window, document);
< / script >
< script >
var btntop = $('#gotop');
btntop.on('click', function (e) {
e.preventDefault();
$('html, body').animate({ scrollTop: 0 }, '300');
});
var $table = $('.content table').not($('figure.highlight > table'))
$table.each(function () {
$(this).wrap('< div class = "table-wrap" > < / div > ')
})
< / script >
< / html >