surrealpatch/docker/Dockerfile

102 lines
2.3 KiB
Text
Raw Normal View History

###
# STAGE: builder
# This stage is used to build the SurrealDB linux binary
###
FROM docker.io/rockylinux:8 as builder
RUN yum install -y gcc-toolset-13 git cmake llvm-toolset patch zlib-devel python3.11
# Install rust
2024-08-27 14:36:47 +00:00
ARG RUST_VERSION=1.80.0
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh
RUN bash /tmp/rustup.sh -y --default-toolchain ${RUST_VERSION}
ENV PATH="/root/.cargo/bin:${PATH}"
RUN rustup target add x86_64-unknown-linux-gnu
RUN rustup target add aarch64-unknown-linux-gnu
ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=/opt/rh/gcc-toolset-13/root/usr/bin/aarch64-redhat-linux-gcc
WORKDIR /surrealdb
COPY docker/builder-entrypoint.sh /builder-entrypoint.sh
RUN chmod +x /builder-entrypoint.sh
ENTRYPOINT ["/builder-entrypoint.sh"]
###
# Final Images
###
#
# Development image (built on the CI environment)
#
FROM --platform=$TARGETPLATFORM cgr.dev/chainguard/glibc-dynamic:latest-dev as dev-ci
ARG TARGETPLATFORM
ARG TARGETOS
ARG TARGETARCH
ARG ARTIFACT_PREFIX
USER root
COPY ${ARTIFACT_PREFIX}.${TARGETOS}-${TARGETARCH}/surreal /surreal
RUN chmod +x /surreal
# Allow connectivity from the host with bridge networking
# This still requires publishing the port when running the container
ENV SURREAL_BIND="0.0.0.0:8000"
ENTRYPOINT ["/surreal"]
#
# Production image (built on the CI environment)
#
FROM --platform=$TARGETPLATFORM cgr.dev/chainguard/glibc-dynamic:latest as prod-ci
ARG TARGETPLATFORM
COPY --from=dev-ci /surreal /surreal
# Allow connectivity from the host with bridge networking
# This still requires publishing the port when running the container
ENV SURREAL_BIND="0.0.0.0:8000"
ENTRYPOINT ["/surreal"]
#
# Development image (built locally)
#
FROM cgr.dev/chainguard/glibc-dynamic:latest-dev as dev
ARG SURREALDB_BINARY=target/release/surreal
COPY ${SURREALDB_BINARY} /surreal
RUN chmod +x /surreal
USER root
# Allow connectivity from the host with bridge networking
# This still requires publishing the port when running the container
ENV SURREAL_BIND="0.0.0.0:8000"
ENTRYPOINT ["/surreal"]
#
# Production image (built locally)
#
FROM cgr.dev/chainguard/glibc-dynamic:latest as prod
COPY --from=dev /surreal /surreal
# Allow connectivity from the host with bridge networking
# This still requires publishing the port when running the container
ENV SURREAL_BIND="0.0.0.0:8000"
ENTRYPOINT ["/surreal"]