springboot+langchain4j实战,本地docker环境启动教程 , Windows 环境下 Docker + WSL2 完整安装教程

Windows 环境下 Docker + WSL2 完整安装教程

🎯 目标读者:Windows 用户,零 Docker 基础。
⏱️ 预计耗时:30-45 分钟(含下载时间)
最终效果:Docker Desktop 跑起来,PostgreSQL + Redis 容器正常运行


一、为什么需要 Docker?

你学 Spring Boot + AI,需要一个"底座"来存数据:

组件作用传统做法Docker 做法
PostgreSQL存向量、用户数据下载 exe,一路 next,配环境变量docker run -d postgres,一行搞定
Redis缓存、会话同上docker run -d redis,一行搞定
MySQL业务数据库(日志、订单、知识库)下载 exe,配置 my.inidocker run -d mysql,一行搞定
PGVector向量检索需要自己编译安装官方镜像,开箱即用

Docker 让你不用在 Windows 上装一堆服务,全部跑在隔离的"小 Linux 虚拟机"里。用完就停,不留垃圾。


二、第一步:启用 WSL2(Windows Subsystem for Linux)

Docker Desktop 在 Windows 上依赖 WSL2 运行。如果你还没有开启:

2.1 管理员身份打开 PowerShell

右键开始菜单 → Windows PowerShell (管理员)终端 (管理员)

2.2 安装 WSL

wsl --install

这条命令会自动做四件事:

  1. 启用"虚拟机平台"功能
  2. 启用"Windows Subsystem for Linux"功能
  3. 安装 WSL2 内核
  4. 安装 Ubuntu 发行版

安装完成后重启电脑

2.3 验证 WSL 版本

重启后打开 PowerShell(普通用户即可):

wsl --version

应该看到类似输出:

WSL 版本: 2.7.8.0
内核版本: 6.18.33.1-1

⚠️ 版本号无所谓,关键是要看到 WSL 版本 ≥ 2.0

如果你的 WSL 还是 v1:

wsl --set-default-version 2

2.4 常见问题

Q:公司电脑、域控环境能装吗?
A:大部分可以。如果失败,可能需要 IT 管理员在组策略中启用"虚拟机平台"。

Q:Windows 10 能装吗?
A:Windows 10 版本 2004+(内部版本 19041+)都可以。Win+R → winver 查看版本。


三、第二步:安装 Docker Desktop

3.1 下载

打开官网:https://www.docker.com/products/docker-desktop/

Download for Windows,下载 Docker Desktop Installer.exe(约 600MB)。

3.2 安装

双击安装包 → 一路下一步,关键勾选:

✅ Use WSL 2 instead of Hyper-V

如果没看到这个选项——说明 WSL2 没装好,回到第二步。

3.3 启动 Docker Desktop

安装完成后桌面会出现 Docker 图标(蓝色小鲸鱼)。

双击启动,右下角任务栏会出现小鲸鱼图标。首次启动需要 1-2 分钟

启动完成后鲸鱼图标不再有动画,鼠标悬停显示 “Docker Desktop is running”。

3.4 验证

打开 PowerShell:

docker --version
docker compose version
docker run --rm hello-world

第三条命令如果输出 “Hello from Docker!”,说明 Docker 环境一切正常。


四、第三步:拉取需要的镜像

我们 Day 4 项目需要三个服务:PostgreSQL(带 PGVector 扩展)、Redis 和 MySQL。

4.1 拉取镜像(可选,docker compose 会自动拉)

首次启动会先拉镜像(比较慢,约 2-5 分钟),之后启动只需要几秒。
记得镜像地址要切换为国内的,在设置的docker engine里

{"builder":{"gc":{"defaultKeepStorage":"20GB","enabled":true}},"experimental":false,"features":{"buildkit":true},"registry-mirrors":["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://docker.rainbond.cc","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.nju.edu.cn","https://jocker.hust.edu.cn","https://hubble.kpse.top"]}

换成国内镜像

docker pull pgvector/pgvector:pg17
docker pull redis:7-alpine
docker pull mysql:8.0

pgvector/pgvector:pg17 是官方维护的 PostgreSQL 17 + PGVector 扩展镜像。
比普通 postgres:17 多了一个向量检索扩展,是 RAG 知识库的核心。

4.2 镜像是什么?

可以理解为"软件的安装包快照"——不是 zip,而是一个完整的小 Linux 文件系统,里面已经装好了 PostgreSQL 和 PGVector 扩展,解压即用。


四、创建 docker-compose 配置文件

新建文件 docker-compose.yml,放哪里都行(建议放项目目录或桌面):

version: "3.9"

services:
  # ========== PostgreSQL + PGVector ==========
  postgres:
    image: pgvector/pgvector:pg17
    container_name: ai-postgres
    restart: unless-stopped
    ports:
      - "5432:5432"
    environment:
      POSTGRES_DB: aidb          # 自动创建这个数据库
      POSTGRES_USER: ai           # 数据库用户名
      POSTGRES_PASSWORD: password # 数据库密码(学习用,生产请改)
    volumes:
      - pgdata:/var/lib/postgresql/data   # 数据持久化:不丢数据
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ai -d aidb"]
      interval: 10s
      timeout: 5s
      retries: 5

  # ========== MySQL ==========
  mysql:
    image: mysql:8.0
    container_name: ai-mysql
    restart: unless-stopped
    ports:
      - "3307:3306"                        # 映射到 3307 避免和本地 MySQL 冲突
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: ai_logs              # 自动创建的业务数据库
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
      - --default-authentication-plugin=mysql_native_password
    volumes:
      - mysqldata:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-proot123"]
      interval: 10s
      timeout: 5s
      retries: 5

  # ========== Redis ==========
  redis:
    image: redis:7-alpine
    container_name: ai-redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    volumes:
      - redisdata:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 3s
      retries: 5

volumes:
  pgdata:
  mysqldata:
  redisdata:

逐行解释

配置项含义
image: pgvector/pgvector:pg17使用哪个镜像(软件包)
container_name: ai-postgres容器名称,方便查看和操作
restart: unless-stopped除非手动停止,否则自动重启(开机自启)
ports: "5432:5432"把容器的 5432 端口映射到 Windows 的 5432 端口——这样代码连 localhost:5432 就等于连容器
volumes: - pgdata:/var/lib/...数据卷:把 PG 的数据库文件存在 Docker 管理的独立空间里。删了容器数据还在。
healthcheck健康检查:每隔 10 秒 ping 一次,确认数据库可用

五、启动容器

docker-compose.yml 所在目录下:

docker compose up -d

-d 表示后台运行(detached)。

验证

docker ps

应该看到三个容器都在运行,STATUS 列显示 healthy

CONTAINER ID   IMAGE                    STATUS
36d2ff2b59     pgvector/pgvector:pg17   Up 5 minutes (healthy)
49ea93634c     redis:7-alpine           Up 5 minutes (healthy)
ad7f3b21e8     mysql:8.0               Up 5 minutes (healthy)

六、常用 Docker 命令速查

命令作用
docker ps查看运行中的容器
docker ps -a查看所有容器(包括已停止的)
docker compose up -d启动所有服务(后台)
docker compose down停止并删除所有服务
docker compose restart重启所有服务
docker compose logs查看日志
docker compose logs postgres只看 PostgreSQL 日志
docker exec -it ai-postgres psql -U ai -d aidb进入 PG 命令行
docker compose pull拉取镜像最新版本

Docker Desktop 小鲸鱼图标

图标状态含义
🐋 静止正常运行
🐋 动画正在启动中
🐋 红色/黄色出错了
右键 → Quit完全退出 Docker

七、测试数据库连接

7.1 命令行测试

docker exec -it ai-postgres psql -U ai -d aidb

进入后试试:

-- 查看 PGVector 扩展是否启用
SELECT * FROM pg_extension WHERE extname = 'vector';

-- 看看有哪些表
\dt

-- 退出
\q

7.2 IDEA 连接测试

如果你用 IntelliJ IDEA Ultimate:

  1. 右侧 → Database → + → Data Source → PostgreSQL
  2. 填入:
    • Host: localhost
    • Port: 5432
    • Database: aidb
    • User: ai
    • Password: password
  3. 点 Test Connection → 看到绿色对勾 → OK

7.3 MySQL 连接测试

命令行测试:

docker exec -it ai-mysql mysql -uroot -proot123 ai_logs

进入后试试:

-- 查看数据库
SHOW DATABASES;

-- 查看字符集
SHOW VARIABLES LIKE 'character%';

-- 预期看到 utf8mb4 — 支持 emoji 和中文

-- 退出
\q

7.4 IDEA 连接 MySQL

  1. 右侧 → Database → + → Data Source → MySQL
  2. 填入:
    • Host: localhost
    • Port: 3307(注意不是默认 3306,我们映射到了 3307)
    • Database: ai_logs
    • User: root
    • Password: root123
  3. 点 Test Connection → 看到绿色对勾 → OK

7.5 代码连接测试

Spring Boot application.yml 连接配置:

PostgreSQL:

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/aidb
    username: ai
    password: password

MySQL(Druid 连接池):

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3307/ai_logs?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
    username: root
    password: root123
    driver-class-name: com.mysql.cj.jdbc.Driver
    druid:
      initial-size: 5
      min-idle: 5
      max-active: 20
      max-wait: 60000
      # 监控页: http://localhost:8088/druid/
      stat-view-servlet:
        enabled: true
        login-username: admin
        login-password: admin123
      # 慢 SQL 监控
      filter:
        stat:
          enabled: true
          slow-sql-millis: 2000
          log-slow-sql: true

⚠️ 端口提示:MySQL 映射到 3307(而非默认 3306),是为了避免与 Windows 本地已安装的 MySQL 冲突。代码里连 localhost:3307 即可。


八、常见问题与解决

Q1:Docker Desktop 启动报 “WSL integration” 错误

解决:管理员 PowerShell 执行 wsl --update,然后重启 Docker Desktop。

Q2:容器启动后马上退出

解决:看日志

docker compose logs postgres

常见原因:端口被占用、磁盘空间不足、WSL2 内存不足。

Q3:WSL2 内存吃太多

解决:在 C:\Users\你的用户名\.wslconfig 中限制内存:

[wsl2]
memory=4GB
processors=2

然后 PowerShell 执行 wsl --shutdown,再重启 Docker Desktop。


九、卸载 Docker Desktop(如果需要)

  1. 设置 → 应用 → 找到 Docker Desktop → 卸载
  2. 如果想彻底清除所有数据(镜像、容器、卷):
    wsl --unregister docker-desktop
    wsl --unregister docker-desktop-data
    

十、总结

你现在拥有了:

能力说明
✅ Docker Desktop容器运行环境
✅ WSL2 (Ubuntu)Docker 的后端 Linux 内核
✅ PostgreSQL 17 + PGVector向量数据库(知识点:RAG 底座)
✅ MySQL 8.0业务数据库(日志、订单、知识库),端口 3307
✅ Redis 7缓存和会话管理
✅ 数据持久化volumes 保证删容器不丢数据
✅ 健康检查healthcheck 保证服务真的可用才对外暴露
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值