Dockerfile中ADD文件的路径问题
首先看一个案例 当前目录的文件如下: Dockerfile 文件内容如下: 本意是想把当前目录下的所有文件放到容器内的 /code 目录, 这个时候使用 docker build 后无法启动, 进入容器, 打开 /code 一看: 会发现, 本来 3 这个文件应该是在 2 这个文件夹内的, 现在统一都跑到了上级目录了, 文件路径完全变了. 自然无法启动. 可以做如下修改:
k8s解除NodePort端口限制
我自己写了一个 svc 的 yaml 文件,部署的时候报错,不在默认的范围内,默认范围是: 30000-32767 kubectl apply -f nginx-src.yaml 报错: 如果是 kubeadm 部署修改配置文件 vim /etc/kubernetes/manifests/kube-apiserver.yaml 在启动参数里面添加如下一行 重启 kube-apiserver
MySQL查询出所有没有主键的表
作者:May22Night链接:https://www.jianshu.com/p/f484c63e5c96 压缩版: 美化版: sql 解释:查询结果中 TABLE_SCHEMA 是库名,TABLE_NAME 就是表名。其查询原理就是 information_schema 库中存储了各个库与表的结构,在 information_schema.TABLES 表中存储了所有表,information_schema.TABLE_CONSTRAINTS 表中存储了表相关的约束,主键就是一种约束,所以 CONSTRAINT_TYPE 字段为 PRIMARY KEY 值的就是拥有主键的表。有了所有表的表名,还有了所有拥有主键的表,那么就简单了,以查询出的全部表为主表,左联一下,右表为空的就是没有主键的表。SQL 中排除了 mysql 自带的五个库,同时解决了不同名的库拥有相同名的表的情况,还有优化空间,不过我觉得不是业务 SQL,没必要优化了。
在Windows下实现一个快速转换音乐格式的小工具
搞点歌在车里听,但是早年 10w 的合资车只能听 mp3 格式,所以把需要我珍藏的音乐转换成 mp3 拷进 U 盘, 转换格式工具当然是选择 ffmpeg 了。搜了下命令是: 接下来需要做一个稍微自动化一点的工具,比如把 flac 文件拖放到 bat 脚本上,就能实现自动转换格式。 完整脚本如下: 其中 chcp 65001 是为了防止 bat 脚本中包含中文导致的乱码。申明脚本编码为 UTF-8, 脚本保存的时候也要以 UTF-8 编码保存, 如果不加 chcp 65001, 那么需要使用 windows 记事本打开重新保存编码选择 ANSI, 因为 cmd 默认的编码就是 GBK 以下是一些常用的代码页。 代码页 说明 65001 UTF-8 代码页 950 繁体中文 936 简体中文默认 GBK 437 MS-DOS 美国英语 另外脚本里用到的变量说明: 上面的脚本用到了短路径, 短路径的好处是可以解决路径中带有空格的问题。
WSL2 - Ubuntu配置记录
WSL 防火墙规则 基础环境配置更换源使用中科大的源: https://mirrors.ustc.edu.cn/help/ubuntu.html 安装常用的包 当前用户免 sudo 密码 WSL 开启 systemd 支持 (仅支持 WSL2) git 配置 zsh 配置安装 zsh 安装 oh my zshhttps://ohmyz.sh/#install 安装主题https://github.com/romkatv/powerlevel10k 安装一些插件https://github.com/zsh-users/zsh-autosuggestions vim修改默认编辑器 安装 vim plug 插件管理工具 配置文件 进入 vim 命令界面, 输入 :PlugInstall 安装插件 常用环境安装安装 golang python nodejs 查看 快速搭建环境记录 安装 zssh, 查看 改造windows-terminal支持lrzsz 常用 alias 常用软链接 tsshtrzsz 使用记录 其他问题如果 wsl 中的...
Linux终端复用器Screen和tmux
参考阮一峰的博客https://www.ruanyifeng.com/blog/2019/10/tmux.html 作用想象一下, 我在自己电脑远程 SSH 连接服务器, 正在命令行执行 mysqldump, 突然 (断网\电脑蓝屏) 了, 那么终端就断了, mysqldump 也就断了, 就需要重新来过. 终端复用器就是创建一个虚拟的终端, 可以挂在后台, 随时想进就进, 还有其他好用的功能, 比如将终端日志保存到文件内. 常用的工具有 tmux 和 screen, tmux 类似于 screen, 但是功能更强大, screen 的记录日志功能很好用, 两者各有千秋. 另外终端复用器对 rz/sz 这种工具的兼容性都不好, 建议不要用来进行 rz/sz 传文件 tmux安装 快速使用输入 tmux 即可启动, 在终端下面有一条状态栏, 显示当前的终端编号. 退出输入: exit 或者按下 Ctrl + d 或者直接关闭窗口查看后台运行的会话: tmux ls进入会话: tmux a -t 0 常用操作 操作 命令或快捷键 打开 tmux tmux 新建 tmu...
Jenkins pipeline中正确使用git
看到很多 jenkins 使用都是直接执行 git clone 命令, 这么做有以下几个缺点. 需要耗费时间去处理 git 分支, 代码冲突等工作, 还需要判断是使用 git clone 还是 git pull 账号密码 (或者 ssh 秘钥) 需要存储在构建机器上, 如果更换了构建节点, 那么需要重新配置, 即对构建环境有依赖, 构建环境是个黑盒子, 因为你不知道上个维护者在这台构建机器上做了什么. 不受 jenkins 管理, 比如删除流水线, 拉取的代码任然存在机器上 做个分支选项框是个痛苦的事情将代码交给 jenkins 管理则省去了这些操作. 使用凭据管理账号密码在 系统管理 – 凭据 – 系统 – 全局凭据 里面增加一个新的凭据 成功后记录一下 ID 编写流水线 branch 不支持 origin/master 这种格式, 所以需要用 split 处理一下 如何生成流水线
Jenkins升级插件引发的血案
我们公司用的 jenkins 是老版本, 不知道什么时候谁点了升级插件, 但是没有重启 jenkins, 一直用者好好的, 突然有一天有个倒霉蛋重启了 jenkins,然后就报错了. 搜索了一圈的解决方案:关闭认证, 配置文件在 .jenkins/config.xml 目录中, 需要先切换到 jenkins 用户, 先备份 cp .jenkins/config.xml{,.bak} 然后再修改 将 authorizationStrategy 这一块改为 将 securityRealm 块 删除, 保存后重启 jenkins, 日志里会打印账号密码, 用这个登陆. 登陆后, 可以看到各种不兼容的插件了. 现在升级 jenkins 版本, 升级后可以看到插件都兼容了, 然后将有更新的插件都更新一下. 如果无法启动, 注意查看 jenkins 启动日志, 我公司升级后提示 java 版本不兼容, 需要将 java 8 升级到 java 11 才可启动新版 jenkins, 为了不影响现有流水线构建, 所以不修改环境变量了, 指定 java 版本来运行新版 jenkins 最后...
记录一次生产环境数据库迁移
迁移要求不要清理目标数据 迁移是老环境迁移到新环境, 新环境之前有过使用记录了, 要求不删除现有的数据, 将老数据导入。有以下几个问题: 导出的 sql 里面不能带 drop table 语句,所以在 mysqldump 的时候需要加上 --skip-add-drop-table 参数 主键或唯一键重复的问题,需要增加参数 --skip-extended-insert sql 执行失败了需要继续, 因为现有数据可能和老环境冲突, 所以插入失败不能影响其他数据的插入, 这里选择在 mysql 控制台执行 source 命令。 备份源数据库 –skip-add-drop-table 这个参数为了不在 sql 文件里面增加 drop 语句,不加的话,执行这个 sql 会先将表删掉,再重新创建。–skip-extended-insert 导出的 sql 一个 insert 对应一条数据。 如何将备份的 sql 发送到目标机器数据量较大,又受限于网络情况, 所以直接在服务器上导出后,使用 tar 压缩, 然后通过 nginx 将文件暴露出来,在目标机器上使用 wget 下载。 遇...
mac下实现快速登陆带有两步验证的ssh跳板机
我们有个堡垒机当前的登陆流程是: ssh username@ip -p port –> 输入密码 –> 打开手机 –> 查看两部验证码 –> 输入 –> 连接成功 解决输入密码的问题mac 因为安全问题使用 brew 已经无法安装 sshpass 这个包了, 我们可以使用 ssh key 来进行免密登陆并提高安全性。不同的跳板机平台设置方式不太一样,一般都是在个人信息设置里面增加 ssh 公钥。 输入密码还可以用一个叫 tssh 的开源工具来实现(兼容 openssh 且支持 lrzsz) 解决输入两步验证码的问题两步验证码就是 TOTP,基于生成的 6 位数字, 30s 更换一次, 我们需要先拿到 TOTP 的 seed, 一般都会给一个二维码,用二维码解析工具解析, 解析出来的内容大致类似于: secret= 后面的内容就是 TOTP 的 seed 使用脚本来生成两步验证码可以使用 python 的 pyotp 包 写入剪切板 然后登陆的时候直接粘贴就可以了。 最终效果~/.zshrc 里面的内容: 需要连接跳板...


