前置准备

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

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

服务连接信息汇总

服务 内部端口 外部端口 账号 密码
PostgreSQL 5432 5433 postgres 123456
Redis 6379 6380 (无) 123456
RabbitMQ 5672 5673 admin 123456
RabbitMQ 管理界面 15672 15673 admin 123456
MySQL (备用) 3306 3307 root 123456