Docker 快速搭建 Redis 集群

本篇,将介绍通过 docker-compose 编排的方式快速搭建 Redis 集群。

计划安排:

  • 构建6个容器,名称分别为 redis1 ~ redis6
  • 内网 IP 分配 172.10.1.1 ~ 172.10.1.6
  • 所有实例的 redis.conf 配置文件相同
  • 将6个实例连接为集群
  • 演示集群中故障自动检测与自动恢复
分类至 Docker
0条评论

Docker 私有仓库界面化管理

前一篇我们介绍了《Docker 私有仓库搭建》,但是搭建完的私有仓库没有 UI 管理界面,操作很不方便。我们可以借助第三方 registry-web 镜像来实现界面化管理,目前比较流行的镜像包是 hyper/docker-registry-web。

通过两条 docker run 指令快速搭建:

docker run -d -p 5000:5000 --name registry-srv registry:2
docker run -it -p 8080:8080 --name registry-web --link registry-srv -e REGISTRY_URL=http://registry-srv:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web 

我们将私有仓库的容器命名为 registry-srv,将 WebUI 管理容器命名为 registry-web,第2条指令的 --link 参数让 registry-srv 和 registry-web 做连接,这样我们在 registry-web 内部就可以通过 registry-srv:5000 地址来访问私有仓库了。

分类至 Docker
0条评论

Docker 私有仓库搭建

在 Docker 中,当我们执行 docker pull xxx 的时候 ,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库。在工作中,我们不可能把企业项目push到公有仓库进行管理。所以为了更好的管理镜像,Docker 不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库。

Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了。

分类至 Docker
0条评论

Let's Encrypt 通配符证书续期失败:must be provided with --manual-auth-hook

前几个月发表了一篇文章《申请免费的 Let's Encrypt 通配符 SSL/TLS 证书》,如今2个多月过去,今天收到了来自 Let's Encrypt 的邮件,提醒我证书该续期了。

原本以为只需要执行 certbot-auto renew 就可以愉快的完成续期,但执行报错了,输出结果如下:

The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',). Skipping.
All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/yangdx.com/fullchain.pem (failure)

重点这句:An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.

原来,通配符域名证书不能简单的通过执行 certbot-auto renew 来完成续期,必须通过 --manual-auth-hook 参数提供一个身份验证脚本来自动完成 DNS TXT 记录的验证操作。

分类至 杂项
0条评论

php 中 http_build_query 函数对空值的处理

在对接 API 接口的时候,我们常常使用 http_build_query 函数来拼接参数。但是,这个函数会对空值做过滤和转换,不小心的话,很容易踩坑。

下面演示执行:

$args = [
    'key1' => 0,
    'key2' => '',
    'key3' => '0',
    'key4' => [],
    'key5' => null,
    'key6' => false,
    'key7' => true
];
$str = http_build_query($args);
echo $str;

输出结果为...

分类至 PHP
0条评论

docker 容器内的 laravel 项目访问变慢

因为重装 win10 系统,把 Docker 也重装了一遍,安装的时候提示系统支持 WSL 2,说是比 Hyper-V 启动更快,推荐使用。居然有好处,那就勾上这个选项吧。

启用 WSL 2 后,Docker 启动确实快了很多。

但是,今天发现,容器内的 Laravel 项目变慢了!

重装系统前,Laravel 项目 API 接口访问慢的时候也就几百毫秒,而现在却要 1.7 秒左右。追踪排查,我这个接口里用到的 SQL 也不复杂啊,就是一个简单的 Select 语句,放到 phpMyAdmin 里面执行也很快,确认不是 SQL 的问题...

分类至 Docker
0条评论

git file mode change

提交代码到仓库时,发现明明没有改动的文件提示有修改,并且是很多的文件都提示有修改。

但是修改的添加行和删除行都是 0。

于是 diff 一下:

$ git diff code.c
old mode 100755
new mode 100644

 

原来是文件模式发生了变化。

想了下,可能是别人从 Mac 上提交,我在 Win 上 pull 代码,导致文件模式发生了变化。

分类至 杂项
0条评论

Excel 中真假重复的一个简单处理

Excel是我们常见的办公软件Office的三驾马车之一,另外两架自然是Word与PowerPoint了。日常办公中,基本上都离不开这3个软件的支持了。方便了工作,也方便了生活,但今天小A遇到了一个小小的问题,就是EXCEL中可能存在的真假重复项的问题。毕竟大家使用Excel的时候经常会使用条件格式中突出显示单元格规则的重复值,来让重复的项目突显出来,避免重复或者进行计数。这个问题是Excel本身设计上的一个问题,但也是比较容易解决的。

分类至 杂项
0条评论

申请免费的 Let's Encrypt 通配符 SSL/TLS 证书

Let's Encrypt 是免费、开放和自动化的证书颁发机构。由非盈利组织互联网安全研究小组(ISRG)运营。Let's Encrypt 提供的是域名验证型(DV)证书,有效期为 90 天,证书快到期时可以通过脚本自动续期。中文官网是 https://letsencrypt.org/zh-cn/。

以往我们申请 SSL 证书,通常是在 IDC 服务商的管理后台页面填写表单进行申请,而 Let's Encrypt 则是通过命令行提交申请,操作也很简单。Let's Encrypt 使用 ACME 协议来验证您对给定域名的控制权并向您颁发证书,最常用的是就是 ACME 客户端软件是  Certbot。

分类至 杂项
0条评论

mysqldump 导出 emoji 表情损坏的解决办法

默认情况下,mysqldump 会以 utf8 作为字符集执行数据导出,如果记录中存在 emoji 表情符号,有可能导出后变成问号。 对于版本 5.5.4 以上的 mysqldump,可以手动指定 utf8mb4 作为默认字符集。

mysqldump --default-character-set=utf8mb4 ...

这样导出的 SQL 就能正常保存 emoji 符号了。

分类至 MySQL
0条评论