搜索
查找主题、作者或分类。
Docker 调试容器时,先用 healthcheck 看服务是不是真的可用容器显示 running,不等于应用已经能接请求。临时排查时可以在 compose 里加一个简单的 `healthcheck`,让状态里直接看到服务是否通过检查。
环境:Docker Compose v2,示例用 nginx。新建 `compose.yml`:
```yaml
services:
web:
image: nginx:alpine
ports:
- "8080:80"
healthcheck:
test: ["CMD-SHELL", "wget -q -O /dev/null http://127.0.0.1/ || exit 1"]
interval: 5s
timeout: 2s
retries: 3
```
启动后看状态:
```bash
docker compose up -d
docker compose ps
```
等一会儿,`STATUS` 里会出现 `healthy`。也可以直接看检查记录:
```bash
docker inspect --format=@autumnleaf · 2026/9/17 07:06:41Node.js:小脚本读 JSON 配置,`fs/promises` 加 `JSON.parse` 就行再往前兜一层的话,`JSON.parse` 成功也不代表结果一定是对象,配置文件写成 `null` 或数组时,后面取字段还是会出问题。
```js
if (config === null || typeof config !== 'object' || Array.isArray(config)) {
throw new Error('配置根节点需要是对象')
}
```
先挡住根类型,再检查 `port`、`name` 这些字段,报错位置会更靠近真正的问题。@springcloud42 · 2026/9/15 00:33:50Node.js:小脚本读 JSON 配置,`fs/promises` 加 `JSON.parse` 就行再补个边角情况:有些编辑器保存的 JSON 文件前面可能带 UTF-8 BOM,`JSON.parse` 会把开头那个隐藏字符也当内容看。
小脚本里如果想兜一下,可以读完后先去掉:
```js
const text = (await readFile('./config.json', 'utf8')).replace(/^\uFEFF/, '')
const config = JSON.parse(text)
```
不常见,但配置文件从 Windows 环境拷过来时偶尔能省一点排查时间。@indigomeadow87 · 2026/9/1 20:43:32Python:临时格式化 JSON,`python -m json.tool` 不用额外装包缩进也能稍微调一下,默认 4 空格有时看日志会占太宽。比如想紧一点:
```bash
printf '{"name":"dev","items":[1,2,3]}' | python -m json.tool --indent 2
```
如果只是终端里扫一眼,2 空格会舒服点。老 Python 版本参数不全的话,还是先 `python -m json.tool -h` 看下。@cedarforest87 · 2026/9/1 20:17:16Python:临时格式化 JSON,`python -m json.tool` 不用额外装包如果日志是一行一个 JSON 的那种,也可以看看 `--json-lines`:
```bash
printf '{"a":1}\n{"b":2}\n' | python -m json.tool --json-lines
```
它会按行分别解析,适合临时看 ndjson。普通 JSON 数组就不用这个参数了,不然反而容易误判。@mistyisle · 2026/9/1 20:09:43Python:临时格式化 JSON,`python -m json.tool` 不用额外装包补一个小细节:如果 JSON 里有中文,默认输出可能会转成 `\uXXXX`。想保留中文可读一点,可以加 `--no-ensure-ascii`:
```bash
printf '{"msg":"开发"}' | python -m json.tool --no-ensure-ascii
```
这个参数也是新一点的 Python 才有,服务器环境比较老的话先 `-h` 看一下。@clearrain · 2026/9/1 20:02:27Python:临时格式化 JSON,`python -m json.tool` 不用额外装包这个命令还可以直接接文件名,不一定非要管道。比如临时把一份压缩过的 JSON 展开到新文件:
```bash
python -m json.tool input.json pretty.json
```
它不会原地改 `input.json`,这一点反而安全点。想覆盖原文件的话我会先输出到临时文件,看一眼没问题再挪过去,避免手滑把坏内容写回去。@gentlebrook · 2026/9/1 19:45:18Node.js:小脚本读 JSON 配置,`fs/promises` 加 `JSON.parse` 就行如果只是本地配置,也可以顺手给个默认值,别让缺字段的时候一路变成 `undefined`。
比如:
```js
const port = Number(config.port ?? 3000)
if (!Number.isInteger(port)) {
throw new Error('port 需要是整数')
}
```
这种不算完整校验,但对小脚本已经能挡住不少手滑。@green_memo · 2026/9/1 19:28:22Node.js:小脚本读 JSON 配置,`fs/promises` 加 `JSON.parse` 就行有个很小的细节:示例里 `json` 代码块第一行的 `// config.json` 只是标文件名,真正复制到 `config.json` 时别带进去。
标准 JSON 不支持注释,带上这行的话 `JSON.parse` 会直接炸。文件名如果想写清楚,放在代码块外面会更不容易误复制。@community_helper_304 · 2026/9/1 19:20:53Node.js:小脚本读 JSON 配置,`fs/promises` 加 `JSON.parse` 就行还有一种更偷懒的写法是直接 import JSON,不过这个在不同 Node 版本里细节有点变来变去。
小脚本为了少踩版本坑,我反而更喜欢这种 `readFile` + `JSON.parse`。路径、报错、字段兜底都能自己控住一点,后面要加校验也比较自然。@brightstone42 · 2026/9/1 18:57:22