AIGC标识 docker使用经验

docker run --rm -p 8000:8000 --env-file .env mssql-mcp

部分 含义
docker run 用某个镜像启动一个容器
--rm 容器停止后自动删除,不留垃圾
-p 8000:8000 端口映射,把宿主机 8000 端口转发到容器 8000 端口
--env-file .env 把宿主机当前目录下的 .env 文件作为环境变量注入容器
mssql-mcp 使用的镜像名

docker run -d --rm -p 8000:8000 --name mssql-mcp --env-file .env mssql-mcp

  • -d:后台运行,命令立刻返回,终端不被占用
  • --name mssql-mcp:给容器起名字,方便 docker logs mssql-mcp、docker stop mssql-mcp
点击查看代码
``# 后台启动
docker run -d --rm -p 8000:8000 --name mssql-mcp --env-file .env mssql-mcp

# 看日志确认启动成功
docker logs mssql-mcp

# 查看/停止
docker ps
docker logs mssql-mcp
docker stop mssql-mcp

# 端口占用排查
netstat -ano | findstr :8000

# 跑你的测试
python src/test/test_ff.py
uv run python src/test/test_ff.py

掌握 5 个最核心的指令

指令 一句话理解
FROM 从哪个基础镜像开始
WORKDIR 之后的操作在哪个目录
RUN 构建时执行什么命令
COPY 把本地什么文件复制进去
CMD 容器启动时运行什么
  • Docker + uv + MCP 项目常用命令速查
点击查看代码
# ============================================================
# 一、构建镜像
# ============================================================

# 重建镜像(改 Dockerfile / pyproject.toml / uv.lock 后必须执行)
docker build -t mssql-mcp .


# ============================================================
# 二、启动容器
# ============================================================

# 标准启动(后台运行 + 挂载 src + 热更新)
docker run -d --rm `
  -p 8000:8000 `
  --name mssql-mcp `
  --env-file .env `
  -v ${PWD}/src:/app/src `
  mssql-mcp

# 说明:
#   -d              后台运行
#   --rm            容器停止后自动删除
#   -p 8000:8000    端口映射(宿主:容器)
#   --name          容器名
#   --env-file      加载 .env 变量
#   -v              挂载 src/ 实现热更新


# ============================================================
# 三、日常操作
# ============================================================

# 查看运行中的容器
docker ps

# 查看所有容器(含已停止)
docker ps -a

# 查看日志(实时)
docker logs -f mssql-mcp

# 查看日志(过滤关键词)
docker logs mssql-mcp | Select-String "HOT RELOAD"

# 停止容器
docker stop mssql-mcp

# 重启容器(改 src/ 下 .py 后只需这步)
docker restart mssql-mcp


# ============================================================
# 四、改代码后的标准流程
# ============================================================

# 场景 A:只改了 src/ 下的 .py 文件
docker restart mssql-mcp

# 场景 B:改了 Dockerfile / pyproject.toml / uv.lock / .env
docker stop mssql-mcp
docker build -t mssql-mcp .
docker run -d --rm `
  -p 8000:8000 `
  --name mssql-mcp `
  --env-file .env `
  -v ${PWD}/src:/app/src `
  mssql-mcp


# ============================================================
# 五、验证
# ============================================================

# 确认挂载生效
docker inspect mssql-mcp --format '{{json .Mounts}}'

# 确认代码从挂载目录加载(期望输出 /app/src/mssql_mcp)
docker exec mssql-mcp uv run --no-sync python -c "import mssql_mcp, os; print(os.path.dirname(mssql_mcp.__file__))"

# 查看容器内 Python 版本
docker exec mssql-mcp python --version

# 查看容器内环境变量
docker exec mssql-mcp env


# ============================================================
# 六、客户端测试
# ============================================================

# 跑测试脚本
uv run python src\test\test_ff.py

# 本地直接验证配置
uv run python -c "from mssql_mcp.config.settings import get_settings; print(get_settings().db.driver)"


# ============================================================
# 七、端口排查
# ============================================================

# 查看 8000 端口占用
netstat -ano | findstr :8000

# 查看占用进程
tasklist | findstr <PID>

# 强杀进程
taskkill /PID <PID> /F


# ============================================================
# 八、清理
# ============================================================

# 停止并删除容器(--rm 启动时已自动删,此命令用于手动清理)
docker stop mssql-mcp

# 删除镜像
docker rmi mssql-mcp

# 清理所有停止的容器、无用网络、悬空镜像
docker system prune -f
posted @ 2026-09-11 11:07  不知者buwei  阅读(1)  评论(0)    收藏  举报