64 lines
1.4 KiB
Docker
64 lines
1.4 KiB
Docker
# Multi-stage build for Odin + Python test environment with RocksDB
|
|
FROM debian:bookworm-slim AS odin-builder
|
|
|
|
# Install dependencies for building Odin
|
|
RUN apt-get update && apt-get install -y \
|
|
git \
|
|
curl \
|
|
build-essential \
|
|
clang \
|
|
llvm \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Odin compiler
|
|
WORKDIR /opt
|
|
RUN git clone https://github.com/odin-lang/Odin.git odin \
|
|
&& cd odin \
|
|
&& ./build_odin.sh release
|
|
|
|
# Final stage with both Odin and Python
|
|
FROM python:3.12-slim
|
|
|
|
# Install runtime and build dependencies including RocksDB
|
|
RUN apt-get update && apt-get install -y \
|
|
clang \
|
|
llvm \
|
|
make \
|
|
git \
|
|
build-essential \
|
|
cmake \
|
|
pkg-config \
|
|
# RocksDB and compression libraries
|
|
librocksdb-dev \
|
|
librocksdb8.7 \
|
|
# Compression libraries that RocksDB depends on
|
|
libsnappy-dev \
|
|
libgflags-dev \
|
|
libz-dev \
|
|
libbz2-dev \
|
|
liblz4-dev \
|
|
libzstd-dev \
|
|
# Additional common dependencies
|
|
libssl-dev \
|
|
libcurl4-openssl-dev \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Copy Odin compiler from builder stage
|
|
COPY --from=odin-builder /opt/odin /opt/odin
|
|
|
|
# Add Odin to PATH
|
|
ENV PATH="/opt/odin:${PATH}"
|
|
ENV ODIN_ROOT="/opt/odin"
|
|
|
|
# Set up library paths for RocksDB
|
|
ENV LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH}"
|
|
ENV PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:${PKG_CONFIG_PATH}"
|
|
|
|
# Install Python dependencies
|
|
RUN pip install --no-cache-dir boto3 pytest requests
|
|
|
|
# Set working directory
|
|
WORKDIR /workspace
|
|
|
|
# Default command
|
|
CMD ["/bin/bash"] |