使用现有的 bitnami/postgresql:16.3.0 镜像安装pg_roaringbitmap插件

# 使用现有的 bitnami/postgresql:16.3.0 镜像作为基础
FROM bitnami/postgresql:16.3.0

USER root

# 安装构建工具和依赖项
RUN install_packages git make gcc postgresql-server-dev-all

# 克隆 pg_roaringbitmap 源码
RUN git clone https://github.com/ChenHuajun/pg_roaringbitmap.git /pg_roaringbitmap

# 编译并安装插件
RUN cd /pg_roaringbitmap && \
    make && \
    make install

# 清理构建环境
RUN rm -rf /pg_roaringbitmap && \
    apt-get remove --purge -y git make gcc postgresql-server-dev-all && \
    apt-get autoremove -y && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# 切换回非root用户
USER 1001

# 继续使用现有的 ENTRYPOINT 和 CMD
ENTRYPOINT [ "/opt/bitnami/scripts/postgresql/entrypoint.sh" ]
CMD [ "/opt/bitnami/scripts/postgresql/run.sh" ]

退出容器后,连接到 PostgreSQL 数据库,并使用 CREATE EXTENSION 命令加载插件:


psql -U postgres -d your_database -c "CREATE EXTENSION roaringbitmap;"
psql -U postgres -d your_database -c "\dx"

你应该能看到 roaringbitmap 在已安装的扩展列表中。

### 正确配置 `bitnami/zookeeper` 和 `bitnami/kafka` 的 Docker 容器 为了实现 ZooKeeper 和 Kafka 集群的正确配置,可以按照以下方式设置容器及其参数。 #### 1. **ZooKeeper 配置** 对于 `bitnami/zookeeper` 容器,需要定义每个节点的身份 (`ZOO_SERVER_ID`) 及其连接地址列表。以下是具体的环境变量和端口映射: - 环境变量: - `ZOO_SERVER_ID=1`: 表示第一个 ZooKeeper 节点的 ID[^1]。 - `ZOO_SERVERS=localhost:2888:3888;localhost:2889:3889;localhost:2890:3890`: 列出了所有 ZooKeeper 节点的地址和端口。 - 端口映射: - `-p 2181:2181`: 对应客户端通信端口。 - `-p 2888:2888`: 同步端口用于内部集群同步。 - `-p 3888:3888`: Leader选举端口。 ```yaml version: '3' services: zookeeper1: image: 'bitnami/zookeeper:latest' environment: - ALLOW_ANONYMOUS_LOGIN=yes - ZOO_SERVER_ID=1 - ZOO_SERVERS=zookeeper1:2888:3888;zookeeper2:2888:3888;zookeeper3:2888:3888 ports: - '2181:2181' - '2888:2888' - '3888:3888' ``` #### 2. **Kafka 配置** 针对 `bitnami/kafka` 容器,需指定 ZooKeeper 连接字符串及其他必要参数: - 环境变量: - `KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181`: 指定 ZooKeeper 集群的连接地址。 - `ALLOW_PLAINTEXT_LISTENER=yes`: 允许明文监听器(仅适用于测试环境)[^3]。 - 端口映射: - `-p 9092:9092`: 外部访问 Kafka 的默认端口。 ```yaml kafka1: image: 'bitnami/kafka:latest' depends_on: - zookeeper1 - zookeeper2 - zookeeper3 environment: - KAFKA_BROKER_ID=1 - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 - ALLOW_PLAINTEXT_LISTENER=yes ports: - '9092:9092' ``` #### 3. **Network Mode** 推荐为所有服务创建一个自定义网络以便于管理和服务发现: ```yaml networks: app-tier: driver: bridge ``` 并将该网络应用到所有服务中: ```yaml services: zookeeper1: networks: - app-tier kafka1: networks: - app-tier ``` #### 4. **集成 Kafka Manager** 要监控 Kafka 集群的状态,可以通过部署 `Yahoo/kafka-manager` 来完成。具体配置如下: - 环境变量: - `ZK_HOSTS=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181`: 指向 ZooKeeper 集群的地址[^4]。 ```yaml kafka-manager: image: 'yahoo/kafka-manager:latest' environment: - ZK_HOSTS=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 ports: - '9000:9000' networks: - app-tier ``` --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值