45 lines
1.4 KiB
Docker
45 lines
1.4 KiB
Docker
FROM debian:bookworm-slim
|
|
|
|
# Install SBCL, ripgrep, and build dependencies
|
|
RUN apt-get update && \
|
|
apt-get install -y sbcl build-essential curl git ripgrep libsqlite3-dev lynx python3 python3-pip && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Quicklisp globally
|
|
RUN curl -O https://beta.quicklisp.org/quicklisp.lisp && \
|
|
sbcl --non-interactive \
|
|
--load quicklisp.lisp \
|
|
--eval '(quicklisp-quickstart:install :path "/opt/quicklisp")' \
|
|
--eval '(ql-util:without-prompting (ql:add-to-init-file))' && \
|
|
rm quicklisp.lisp
|
|
|
|
# Set up the working directory
|
|
WORKDIR /app
|
|
|
|
# Copy source code and system definition
|
|
COPY opencortex.asd /app/
|
|
COPY src/ /app/src/
|
|
|
|
# Ensure we aren't using a stale binary from the host
|
|
RUN rm -f /app/opencortex-server
|
|
|
|
# Build the standalone binary natively inside the container
|
|
# This ensures GLIBC compatibility with the runtime environment.
|
|
RUN sbcl --non-interactive \
|
|
--eval '(push "/app/" asdf:*central-registry*)' \
|
|
--eval '(ql:quickload :opencortex)' \
|
|
--eval '(asdf:make :opencortex)'
|
|
|
|
# Ensure the binary is executable
|
|
RUN chmod +x /app/opencortex-server
|
|
|
|
# Expose the communication protocol and Web Dashboard ports
|
|
EXPOSE 9105 8080
|
|
|
|
# The app expects the memex to be mounted here
|
|
VOLUME /memex
|
|
|
|
# Run the natively compiled standalone daemon
|
|
CMD ["./opencortex-server"]
|