Docker COPY 复制文件夹的诡异行为

问题现象

在制作 docker 镜像时,有复制某一个路径下所有文件和文件夹到镜像的需求,写下了如下 dockerfile:

1
2
3
FROM alpine
WORKDIR /root/test_docker_proj
COPY * ./

原始目录结构是这样的:

1
2
3
4
5
6
7
/projects/test_docker_proj
├── Dockerfile
├── dir1
│   ├── dir11
│   │   └── file11
│   └── file1
└── file2

然而复制到 docker 镜像里的目录结构变成了这样:

1
2
3
4
5
6
/root/test_docker_proj
├── Dockerfile
├── dir11
│   └── file11
├── file1
└── file2

探究 Pandas 读取 Excel 文件报错问题

问题描述

使用 Pandas 的 read_excel 方法读取一个 16 万行的 Excel 文件报 AssertionError 错误:

1
2
3
  "/Users/XXX/excel_test/venv/lib/python3.7/site-packages/xlrd/xlsx.py", line 637, in do_row
assert 0 <= self.rowx < X12_MAX_ROWS
AssertionError

使用代理进行 docker build 问题的解决思路

问题描述

在使用 docker build 打包镜像时,遇到了需要使用代理访问网络的需求。使用如下的 Dockerfile 来模拟这个场景:

1
2
FROM golang:1.12
RUN curl www.google.com --max-time 3

国内一般网络环境下,curl www.google.com 是无法正常返回的,加入 –max-time 让 curl 的耗时不要太长。

go json 实践中遇到的坑

在使用 go 语言开发过程中,经常需要使用到 json 包来进行 json 和 struct 的互相转换,在使用过程中,遇到了一些需要额外注意的地方,记录如下。

基于 JWT + Refresh Token 的用户认证实践

HTTP 是一个无状态的协议,一次请求结束后,下次在发送服务器就不知道这个请求是谁发来的了(同一个 IP 不代表同一个用户),在 Web 应用中,用户的认证和鉴权是非常重要的一环,实践中有多种可用方案,并且各有千秋。

通过 ngrok 实现 ssh 内网穿透

ngrok

用 ssh 访问一台主机,如果和主机在一个局域网中或者主机拥有公网 IP,就可以使用 ssh 命令直接连接主机的 IP 地址,但是大部分公司和家庭内部都是局域网,并不能给局域网内的每一台主机都分配一个公网 IP,这时候就需要进行内网穿透,才能从外部连接到局域网内的主机。

ngrok 是一个反向代理工具,可以实现将内网的端口暴露到公网,通过 ngrok,也能将 ssh 使用的端口暴露出去,以此实现 ssh 的内网穿透。