前置准备

首先创建所有服务的数据持久化目录:

bash
1# 创建统一的数据存储目录
2mkdir -p ~/docker-data/{postgres,redis,rabbitmq}

服务部署

PostgreSQL(支持向量扩展,端口5433)

bash
 1# 拉取支持向量扩展的PostgreSQL镜像
 2docker pull pgvector/pgvector:pg17
 3
 4# 启动PostgreSQL容器
 5docker run -d \
 6  --name postgres \
 7  --restart unless-stopped \
 8  -m 512m \
 9  -e POSTGRES_PASSWORD=123456 \
10  -e POSTGRES_DB=myapp \
11  -v ~/docker-data/postgres:/var/lib/postgresql/data \
12  -p 5433:5432 \
13  pgvector/pgvector:pg17

启用向量扩展(首次启动后执行):

bash
1docker exec -it postgres psql -U postgres -d myapp -c "CREATE EXTENSION IF NOT EXISTS vector;"

连接测试:

bash
1docker exec -it postgres psql -U postgres -d myapp -c "SELECT 1+1;"
2# 返回 ?column? | 2 表示成功

Redis(缓存服务,端口6380)

bash
 1# 拉取Redis镜像
 2docker pull redis:7-alpine
 3
 4# 启动Redis容器
 5docker run -d \
 6  --name redis \
 7  --restart unless-stopped \
 8  -m 128m \
 9  -v ~/docker-data/redis:/data \
10  -p 6380:6379 \
11  redis:7-alpine \
12  redis-server --maxmemory 128mb --maxmemory-policy allkeys-lru --requirepass 123456 --appendonly yes

连接测试:

bash
1docker exec -it redis redis-cli -a 123456 ping
2# 返回 PONG 表示成功

RabbitMQ(消息队列,端口5673/15673)

bash
 1# 拉取带管理界面的RabbitMQ镜像
 2docker pull rabbitmq:4-management-alpine
 3
 4# 启动RabbitMQ容器
 5docker run -d \
 6  --name rabbitmq \
 7  --restart unless-stopped \
 8  -m 384m \
 9  -v ~/docker-data/rabbitmq:/var/lib/rabbitmq \
10  -p 5673:5672 \
11  -p 15673:15672 \
12  -e RABBITMQ_DEFAULT_USER=admin \
13  -e RABBITMQ_DEFAULT_PASS=123456 \
14  rabbitmq:4-management-alpine

管理界面访问: http://你的IP:15673,账号 admin / 密码 123456

MySQL(备用数据库,端口3307)

如需要MySQL作为备用数据库,可使用以下配置:

bash
 1# 拉取MySQL镜像
 2docker pull mysql:8.0
 3
 4# 启动MySQL容器
 5docker run -d \
 6  --name mysql \
 7  --restart unless-stopped \
 8  -m 512m \
 9  -e MYSQL_ROOT_PASSWORD=123456 \
10  -e MYSQL_DATABASE=myapp \
11  -v ~/docker-data/mysql:/var/lib/mysql \
12  -p 3307:3306 \
13  mysql:8.0 \
14  --innodb_buffer_pool_size=256M

服务连接信息汇总

服务内部端口外部端口账号密码
PostgreSQL54325433postgres123456
Redis63796380(无)123456
RabbitMQ56725673admin123456
RabbitMQ 管理界面1567215673admin123456
MySQL (备用)33063307root123456