61 lines
1.2 KiB
Docker
61 lines
1.2 KiB
Docker
# Stage 1: Builder
|
|
FROM ubuntu:24.04 AS builder
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
build-essential \
|
|
g++ \
|
|
librocksdb-dev \
|
|
libsnappy-dev \
|
|
liblz4-dev \
|
|
libzstd-dev \
|
|
zlib1g-dev \
|
|
libbz2-dev \
|
|
curl \
|
|
clang \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Odin compiler
|
|
RUN curl -Lo /tmp/odin.tar.gz https://github.com/odin-lang/Odin/releases/download/dev-2026-02/odin-linux-amd64-dev-2026-02.tar.gz \
|
|
&& tar -xzf /tmp/odin.tar.gz -C /tmp \
|
|
&& mv /tmp/odin-linux-amd64-nightly+2026-02-04 /opt/odin \
|
|
&& ln -s /opt/odin/odin /usr/local/bin/odin \
|
|
&& chmod +x /opt/odin/odin \
|
|
&& odin version \
|
|
&& rm /tmp/odin.tar.gz
|
|
|
|
WORKDIR /app
|
|
COPY . .
|
|
|
|
# just use the make file
|
|
RUN make release
|
|
|
|
# Stage 2: Runtime for deployment
|
|
FROM ubuntu:24.04 AS runtime
|
|
|
|
# Only runtime shared libs
|
|
RUN apt-get update && apt-get install -y \
|
|
librocksdb8.9 \
|
|
libsnappy1v5 \
|
|
liblz4-1 \
|
|
libzstd1 \
|
|
zlib1g \
|
|
libbz2-1.0 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
WORKDIR /app
|
|
|
|
# only need the compiled binary from the builder stage
|
|
COPY --from=builder /app/build/jormundb .
|
|
|
|
RUN mkdir -p /data
|
|
|
|
#USER jormun
|
|
|
|
EXPOSE 8002
|
|
VOLUME ["/data"]
|
|
|
|
ENV JORMUN_HOST=0.0.0.0
|
|
ENV JORMUN_PORT=8002
|
|
ENV JORMUN_DATA_DIR=/data
|
|
|
|
ENTRYPOINT ["./jormundb"] |