轻量服务器上复现 AI 编程助手开发环境记录

作者:袖梨 2026-07-19
这次记录一个复现过程:我想在轻量服务器上准备一套给 AI 编程助手使用的开发环境,让它能执行 `test`、`lint`、`docker compose up` 这些命令。

目标不是部署生产服务,而是让一套新环境能稳定跑起来。这样 AI 接任务时,失败日志才有意义。

## 1. 环境和现象

环境大致如下:

```text

服务器:2C4G 轻量服务器

系统:Linux

容器:Docker Docker Compose

项目:Node API Postgres Redis

测试:unit test lint 少量 E2E

```

一开始我以为只是把代码拉下来就行,实际遇到几个问题:

```text

npm test

# Node 版本不一致

docker compose up -d

# postgres 还没 ready,api 已经开始连

npx playwright test

# 浏览器依赖缺失

```

这些问题对人来说能手动绕,但 AI 编程助手不应该靠猜。

2. 固定运行时

我先把运行时写到 `.devcontainer/devcontainer.json`:

```json

{

"name": "ai-ready-dev",

"image": "docker.1ms.run/node:22-alpine",

"forwardPorts": [3000],

"postCreateCommand": "npm ci"

}

```

这样至少不用在服务器上反复切 Node 版本。后续如果需要 native module,再把系统依赖放进 Dockerfile。

## 3. 固定依赖服务

开发依赖用 `compose.dev.yaml` 管:

```yaml

services:

app:

image: docker.1ms.run/node:22-alpine

working_dir: /workspace

volumes:

- .:/workspace

command: sh -c "npm ci && npm run dev"

ports:

- "3000:3000"

env_file:

- .env.example

depends_on:

postgres:

condition: service_healthy

redis:

condition: service_healthy

postgres:

image: docker.1ms.run/postgres:16

environment:

POSTGRES_USER: app

POSTGRES_PASSWORD: app

POSTGRES_DB: app

healthcheck:

test: ["CMD-SHELL", "pg_isready -U app"]

interval: 5s

timeout: 3s

retries: 20

redis:

image: docker.1ms.run/redis:7

healthcheck:

test: ["CMD", "redis-cli", "ping"]

interval: 5s

timeout: 3s

retries: 20

```

这里最有用的是 healthcheck。`compose up -d` 成功不代表数据库和缓存已经可用,AI 如果马上跑测试,很容易拿到假失败。

4. 任务前预检

我把下面几条作为 AI 接任务前的预检:

```bash

docker compose -f compose.dev.yaml pull

docker compose -f compose.dev.yaml up -d

docker compose -f compose.dev.yaml ps

npm ci

npm run lint

npm test

```

如果只想先排镜像问题,可以单独跑:

```bash

docker pull docker.1ms.run/node:22-alpine

docker pull docker.1ms.run/postgres:16

docker pull docker.1ms.run/redis:7

```

## 5. 复现结果

整理后,AI 编程助手执行任务时,失败原因清楚了很多:

- `pull` 失败:先看镜像入口和网络。

- `up` 失败:看 Compose 服务和 healthcheck。

- `lint` 失败:看代码格式或规则。

- `test` 失败:再看业务逻辑或测试本身。

这次最大的体会是:AI 接代码任务之前,先要让环境能被机器复现。README 可以解释背景,但真正执行的步骤要落到容器、Compose、脚本和健康检查里。","createTime":1782874735,"ext":{"closeTextLink":0,"comment_ban":0,"description":"","focusRead":0},"favNum":0,"html":"","isOriginal":0,"likeNum":0,img_6a5c9a7e29a8b30.webp

相关文章

精彩推荐