
fgrehm/libduckdblibduckdb是一个以Docker镜像形式分发DuckDB头文件和库文件的项目。该镜像主要为Ruby项目设计,旨在支持依赖suketa/ruby-duckdb的应用,同时也适用于其他需要使用DuckDB的平台。其核心价值在于简化DuckDB在Docker环境中的部署,尤其是解决了Alpine等精简Linux发行版中手动编译DuckDB的复杂问题。
所有可用标签请参见Docker Hub:[***]
在Dockerfile中通过多阶段构建,从libduckdb镜像复制所需文件:
dockerfileFROM fgrehm/libduckdb:<TAG> AS libduckdb FROM some/base:image-tag # 方式一:直接复制所有文件(信任镜像时使用) COPY --from=libduckdb /libduckdb / # 方式二:显式复制指定文件 COPY --from=libduckdb /libduckdb/usr/local/include/duckdb.h /usr/local/include COPY --from=libduckdb /libduckdb/usr/local/lib/libduckdb.so /usr/local/lib
适用于基于Alpine的Ruby镜像:
dockerfileFROM fgrehm/libduckdb:0.8.0-alpine3.18 AS libduckdb FROM ruby:3.2-alpine3.18 RUN apk add --no-cache --update \ make \ g++ # 复制DuckDB文件 COPY --from=libduckdb /libduckdb / # 实际项目中需添加Gemfile等步骤 RUN gem install duckdb
适用于基于Debian的slim镜像:
dockerfileFROM fgrehm/libduckdb:0.8.0 AS libduckdb FROM ruby:3-slim RUN apt-get update \ && apt-get install -y --no-install-recommends make gcc \ && rm -rf /var/lib/apt/lists/* # 复制DuckDB文件 COPY --from=libduckdb /libduckdb / # 实际项目中需添加Gemfile等步骤 RUN gem install duckdb
使用suketa/ruby-duckdb gem时,需要先安装DuckDB引擎,否则会出现类似以下错误:
=> gem install duckdb ... ******************************************************************************** duckdb >= 0.5.0 is not found. Install duckdb >= 0.5.0 library and header file. ********************************************************************************
在macOS上,可通过brew install duckdb轻松解决;但在Linux上,尤其是Alpine等精简发行版中,问题更为复杂:
本镜像通过提供预编译的DuckDB文件,解决了上述问题,可直接通过COPY命令在多阶段构建中集成,大幅简化部署流程。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务