在Docker容器中部署KingbaseES数据库与Python开发环境,需遵循以下结构化步骤:
1. 基础镜像准备
选择官方基础镜像并更新系统:
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y \
wget \
gnupg \
python3.10 \
python3-pip \
libpq-dev # KingbaseES依赖库
2. 安装KingbaseES
2.1 下载安装包
从人大金仓官网获取安装包(需授权):
RUN wget https://example.com/kingbase-v8.6.tar.gz -P /tmp
2.2 解压与安装
RUN tar -xzvf /tmp/kingbase-v8.6.tar.gz -C /opt && \
cd /opt/kingbase && \
./setup.sh --mode unattended # 静默安装
2.3 配置环境变量
ENV KINGBASE_HOME=/opt/kingbase
ENV PATH=$KINGBASE_HOME/bin:$PATH
3. 配置Python环境
3.1 安装依赖库
RUN pip install \
pandas \
sqlalchemy \
psycopg2-binary # KingbaseES兼容PostgreSQL协议
3.2 添加Python连接驱动
创建requirements.txt:
kingbase-python-driver==1.0.0 # 官方Python驱动
4. 容器启动脚本
创建start.sh初始化服务:
#!/bin/bash
# 启动KingbaseES
$KINGBASE_HOME/bin/sys_ctl start -D $KINGBASE_HOME/data
# 初始化Python环境
python3 -m venv /app/venv
source /app/venv/bin/activate
# 保持容器运行
tail -f /dev/null
赋予执行权限:
RUN chmod +x /start.sh
CMD ["/start.sh"]
5. 数据库连接测试
Python测试脚本test_connection.py:
import sqlalchemy
engine = sqlalchemy.create_engine(
"kingbase+psycopg2://user:password@localhost:54321/testdb"
)
with engine.connect() as conn:
result = conn.execute("SELECT version()")
print(f"KingbaseES版本: {result.fetchone()[0]}")
6. Docker构建与运行
# 构建镜像
docker build -t kingbase-python .
# 启动容器(映射端口54321)
docker run -d -p 54321:54321 --name kingbase_dev kingbase-python
# 执行测试
docker exec kingbase_dev python3 test_connection.py
关键注意事项
-
数据持久化
挂载数据卷避免数据丢失:docker run -v kingbase_data:/opt/kingbase/data ... -
安全配置
- 在
sys_hba.conf中设置IP白名单 - 通过环境变量注入密码(避免硬编码)
- 在
-
性能优化
在kingbase.conf中调整:shared_buffers = 1GB work_mem = 64MB
完整项目示例见:GitHub示例仓库
实际部署前需确认KingbaseES授权许可及版本兼容性。
2187

被折叠的 条评论
为什么被折叠?



