手把手搭建一个容器化+代理网关+可视化管理环境

2849b08ac82d88696bc646007c0fc05a.gif

作者 | togettoyou

来源 | SuperGopher

前言

本文主要分享个人服务器的应用部署方案现状,容器化+代理网关+可视化管理。

准备阶段

我购买的是腾讯云服务器(2 核 4GB 3Mbps)

b61a3b32caa49e6abc010c6da8120293.png

域名也是在腾讯云备案过的,提前准备域名解析

2bff98f427cc9f6491c20b17ff75d1c6.png

配置环境

安装 Docker

curl -sSL https://get.daocloud.io/docker | sh

安装 Docker Compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

设置镜像加速和开机自启

mkdir /etc/docker
echo '{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}' > /etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker

部署 Traefik

创建 Traefik 目录,并在该目录下进行系列操作

cd ~
mkdir traefik
cd traefik/

创建 Traefik 的启动配置

vi traefik.yml
# 定义监听端口:web(80) 和 websecure(443)
entryPoints:web:address: ":80"websecure:address: ":443"
# 配置发现提供者,这里为 docker
providers:docker: {}
# 开启 Traefik 面板访问 (8080端口)
api:dashboard: trueinsecure: true
# 创建名称为 open-https 的  tls 配置(会使用 Let's Encrypt 自动生成 https 证书)
certificatesResolvers:open-https:acme:email: "youremail@qq.com"storage: "acme.json"httpChallenge:entryPoint: web

创建名称为 traefik 的 Docker 网络环境,后续 Traefik 和需要代理的应用容器都需要部署在该网络环境下才可以被访问到

docker network create traefik

创建 docker-compose 配置

vi docker-compose.yml
version: '3'
services:traefik:image: traefik:v2.4# 需要将本地的 /var/run/docker.sock 挂载到 Traefik 容器内,才可以使用到 docker 配置发现volumes:- /var/run/docker.sock:/var/run/docker.sock- $PWD/traefik.yml:/etc/traefik/traefik.ymlrestart: always# 把 Traefik 容器监听的 80 和 443 端口映射到宿主机(以后宿主机只要暴露 80 和 443 就可以了,所有流量通过 Traefik 代理)ports:- "80:80"- "443:443"# 使用自定义的 traefik 网络networks:- traefik# 标签配置,Traefik 的配置发现是通过标签抓取的labels:# 开启 redirectscheme 中间件,中间件名称为 redirect-https ,该中间件可以重定向 http 到 https ,达到强制 https 的目的- "traefik.http.middlewares.redirect-https.redirectscheme.scheme=https"# 配置一个名称为 traefik-service 的服务,容器内端口为 8080- "traefik.http.services.traefik-service.loadbalancer.server.port=8080"# 配置一个名称为 https-traefik 的路由,代理服务为 traefik-service# 监听域名为 traefik.togettoyou.com ,端口为 websecure (443) 的流量请求# 开启 tls ,使用 open-https ,自动签发证书- "traefik.http.routers.https-traefik.service=traefik-service"- "traefik.http.routers.https-traefik.rule=Host(`traefik.togettoyou.com`)"- "traefik.http.routers.https-traefik.entrypoints=websecure"- "traefik.http.routers.https-traefik.tls=true"- "traefik.http.routers.https-traefik.tls.certresolver=open-https"# 配置一个名称为 http-traefik 的路由,代理服务为 traefik-service# 监听域名为 traefik.togettoyou.com ,端口为 web (80) 的流量请求# 使用 redirect-https 中间件,将 http 请求重定向到 https,即重定向到了上面配置的 https-traefik 路由- "traefik.http.routers.http-traefik.service=traefik-service"- "traefik.http.routers.http-traefik.rule=Host(`traefik.togettoyou.com`)"- "traefik.http.routers.http-traefik.entrypoints=web"- "traefik.http.routers.http-traefik.middlewares=redirect-https"networks:traefik:external: true

启动 Traefik

docker-compose up -d

访问 http://traefik.togettoyou.com 时会发现被 302 重定向到了 https://traefik.togettoyou.com ,并且自动配置了证书

查看面板也可以发现和我们预期的一致

e41d935ad80dbb1d6bc8bfc06c8bda86.png

29474aa9cd9ed6ad02fccd26cd0131a1.png

部署 Docker 可视化工具

Portainer 是一个 Docker 的可视化图形工具。

同理,我们创建 Portainer 目录,并在该目录进行系列操作

cd ~
mkdir portainer
cd portainer/

创建 docker-compose 配置

vi docker-compose.yml
version: '3'
services:portainer:image: portainer/portainer-ce# 挂载 /var/run/docker.sock ,并持久化 portainer 数据volumes:- /var/run/docker.sock:/var/run/docker.sock- $PWD/data:/datarestart: always# 使用自定义的 traefik 网络networks:- traefiklabels:# 配置一个名称为 portainer-service 的服务,容器内端口为 9000- "traefik.http.services.portainer-service.loadbalancer.server.port=9000"# 配置一个名称为 https-portainer 的路由,代理服务为 portainer-service# 监听域名为 docker.togettoyou.com ,端口为 websecure (443) 的流量请求# 开启 tls ,使用 open-https ,自动签发证书- "traefik.http.routers.https-portainer.service=portainer-service"- "traefik.http.routers.https-portainer.rule=Host(`docker.togettoyou.com`)"- "traefik.http.routers.https-portainer.entrypoints=websecure"- "traefik.http.routers.https-portainer.tls=true"- "traefik.http.routers.https-portainer.tls.certresolver=open-https"# 配置一个名称为 http-portainer 的路由,代理服务为 portainer-service# 监听域名为 docker.togettoyou.com ,端口为 web (80) 的流量请求# 使用 redirect-https 中间件,将 http 请求重定向到 https,即重定向到了上面配置的  https-portainer 路由- "traefik.http.routers.http-portainer.service=portainer-service"- "traefik.http.routers.http-portainer.rule=Host(`docker.togettoyou.com`)"- "traefik.http.routers.http-portainer.entrypoints=web"- "traefik.http.routers.http-portainer.middlewares=redirect-https"networks:traefik:external: true

启动 Portainer

docker-compose up -d

查看面板

991df717174db4db77f3fc68af83950d.png

访问 docker.togettoyou.com

f01c37d8deac0aa719b6b960313a38b3.png

总结

利用 Docker + Traefik + Portainer ,极大方便了我们个人服务器应用部署。Traefik 监听着 80 和 443 端口,因此服务器只需要暴露出这两个端口,其他的流量请求都交由 Traefik 来代理,基于 Traefik 的配置发现机制,在部署我们的容器应用时只要在 Label 加上 Traefik 的规则即可;对于容器应用的启动停止、日志查看等使用 Portainer 绰绰有余,几乎不需要登陆到服务器上操作查看。

a17c42b71f366a46d097087f332a54c0.gif

往期推荐

Spring 完美导入 IDEA

k8s集群居然可以图形化安装了?

使用这个库,让你的服务操作 Redis 速度飞起

将 k8s 制作成 3D 射击游戏,好玩到停不下来

f8791180debeb5b889574350001db245.gif

点分享

718aa8dcf7da3db94f8b674cdbdc11bd.gif

点收藏

e63d14a406d354e00bb6ab8505ef5480.gif

点点赞

419bb75d0f3506259475f4a8c34aa72d.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

漫画 | 一口气搞懂 Serverless !

简介: 第二届云原生编程挑战赛为热爱技术的年轻人提供一个挑战世界级技术问题的舞台,希望用技术为全社会创造更大价值。 作者 | 刘欣 呃,我可能是别人眼中所说的不用奋斗的一代。 大家喜欢听的什么多姿多彩的生活,我都经历过一…

OpenKruise v0.10.0 新特性 WorkloadSpread 解读

简介: 针对需求,OpenKruise 在 v0.10.0 版本中新增了 WorkloadSpread 特性。目前它支持配合 Deployment、ReplicaSet、CloneSet 这些 workload,来管理它们下属 Pod 的分区部署与弹性伸缩。下文会深入介绍 WorkloadSpread 的应用场景和实现原理…

CSS 状态管理,玩出花样了!

作者 | 零一来源 | 前端印象CSS用于交互的方式无非就那么几种:伪类::hover、:link、:active ...动画:animation过渡动画:transition这些交互方式组合起来,真的可以玩出一些花样,例如我们本文的主题&#xf…

告别Kafka Stream,让轻量级流处理更加简单

简介: 还在花精力去选型Kafka组件去做清洗转化?来试试Kafka ETL任务功能! 一说到数据孤岛,所有技术人都不陌生。在 IT 发展过程中,企业不可避免地搭建了各种业务系统,这些系统独立运行且所产生的数据彼此独…

元宇宙“性骚扰”现象频出,Meta推出“个人结界”能保护好女玩家吗?

作者 | 小码君来源 | 抓码青年元宇宙,可以说是最近最炙手可热的概念了。各大厂纷纷入局元宇宙,Faceebook甚至将总公司名字都改名为Meta。不过盯上元宇宙的可不止资本大鳄,还有一些不怀好意的色狼。据外媒报道称,在Meta的Oculus设备…

【CDS技术揭秘系列 01】阿里云CDS-OSS容灾大揭秘

简介: 本文主要阐述 CDS 产品中 OSS 服务在容灾方面的部署形态以及实现的其本原理。 容灾功能可以保证用户一份数据在多个地方存在冗余备份,当某个机房出现极端异常(比如物理损毁)情况下,数据也不会出现丢失&#xff1…

如何促合作共赢?技术人的一点经验分享

简介: 本文作者将通过与詹韦团队一起合作的《树懒平台》,分享在工作过程中,我们什么情况下会有合作诉求?有了合作诉求之后,如何寻找对的人?锁定候选人之后,如何打动对方促成合作?合作…

不记得 Git 命令? 懒人版 Git 值得拥有!

作者 | Eason来源 | 程序员巴士Git的强大是所有开发者都心知肚明的事情,但是其多样的命令令人很是难受。不过在Github上有着这么一个开源项目lazygit[1]。Lazygit是由Jesseduffield开发并维护的项目,其代码托管在Github。通过使用Lazygit,我们…

Dubbo3.0|阿里巴巴服务框架三位一体的选择与实践

简介: 服务框架就像铁路的铁轨一样,是互通的基础,只有解决了服务框架的互通,才有可能完成更高层的业务互通,所以用相同的标准统一,合二为一并共建新一代的服务框架是必然趋势。Dubbo3.0 是 Dubbo2.0 与 HSF…

全球首款乘云而来的存储产品CDS诞生!

9月22日,阿里云发布全球首款“云定义存储”(Cloud Defined Storage,CDS)产品。作为一款本地部署的分布式存储产品,阿里云CDS拥有与公共云存储相同的技术架构,让企业客户在本地也能部署和使用与公共云一致的…

性能提升3倍、时延降低70%,阿里云企业级存储ESSD云盘再升级!

9月22日,阿里云存储年度新品发布会上,阿里云基础产品资深产品总监陈起鲲发布了其全球领先的旗舰级块存储产品ESSD的两款新规格(ESSD Auto PL、ESSD PL-X),并宣布了新增的多项企业级能力。 据了解,ESSD是阿…

一图看懂,什么是“云定义存储”

世界的诞生是从盘古开天辟地开始 而数据的存储 则由在龟甲上刻下的第一个字开始 经过数千年发展 数据存储也从最初的 龟壳、竹简等材料逐步进化到磁带、硬盘甚至云上 在之前几千年里 人们对于数据存储的需求并没那么高 仅仅通过纸张就能将所有数据记录下来 随着第一台计算机面…

Android 13 第一个开发者版本来了,网友直呼:Android 12 还没玩透!

整理 | 苏宓出品 | CSDN(ID:CSDNnews)2 月 10 日,Google 宣布 Android 13 首个预览版面向开发者开放,此版本重点聚焦隐私和安全、提供开发者生产力、应用兼容性,并保持与 OpenJDK 11 更新一致、提供主题图标…

「技术人生」第6篇:技术同学应该如何理解业务?

简介: 本文以大量理论论述解析业务,并提供多种基于不同场景的实操方法,帮助技术同学以科学、合理的方式开展日常工作、指导团队开展业务建设,保障顶层设计的落地执行。 一. 背景 目前已经发布《技术一号位的方法论》系列文章其实…

参数设置_变频器基本参数设置

工业设备的使用如何达到最大效能以及最佳效果,需要使用人员充分了解设备性能以及工艺要求,所以变频器参数设置或者优化是非常重要的环节,古人云失之毫厘差之千里就是这个道理。一、变频器基本参数设置参数设置可以是手持编程器操作&#xff0…

Morphling:云原生部署 AI , 如何把降本做到极致?

简介: Morphling 本意是游戏 Dota 中的英雄“水人”,他可以根据环境要求,通过灵活改变自身形态,优化战斗表现。我们希望通过 Morphling 项目,实现针对机器学习推理作业的灵活、智能的部署配置改变,优化服务…

datax参数设置_DataX Web数据增量同步配置说明

一、根据日期进行增量数据抽取1.页面任务配置打开菜单任务管理页面,选择添加任务按下图中5个步骤进行配置1.任务类型选DataX任务2.辅助参数选择时间自增3.增量开始时间选择,即sql中查询时间的开始时间,用户使用此选项方便第一次的全量同步。第…

Node18 即将支持 import HTTP资源!

作者 | 零一来源 | 前端印象最近看到Node官方提交了一条commit ,并且已经合入 master分支 ,如下图所示:node master commit由此可见,Node18可能会支持一个非常 nice 的功能,那就是 支持 import 远程HTTPS资源和本地的H…

MYSQL深潜 - 剖析Performance Schema内存管理

简介: 本文主要是通过对PFS引擎的内存管理的源码的阅读,解读PFS内存分配及释放原理,深入剖析其中存在的一些问题,以及一些改进思路。本文源代码分析基于Mysql-8.0.24版本。 作者 | 之枢 来源 | 阿里技术公众号 一 引言 MYSQL Pe…

基于MaxCompute SQL 的半结构化数据处理实践

简介: MaxCompute作为企业级数据仓库服务,集中存储和管理企业数据资产、面向数据应用处理和分析数据,将数据转换为业务洞察。通过与阿里云内、外部服务灵活组合,可构建丰富的数据应用。全托管的数据与分析解决方案,可简…