forked from casey/just
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.cli
More file actions
75 lines (58 loc) 路 2.4 KB
/
Copy pathDockerfile.cli
File metadata and controls
75 lines (58 loc) 路 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# ===================================================================
# just-ai CLI - Multi-stage Docker Build
# ===================================================================
# Build stage
FROM rust:1.89-slim-bookworm AS builder
# Install build dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
pkg-config \
libssl-dev \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Set working directory
WORKDIR /app
# Copy just-ai crate files for dependency caching
COPY crates/just-ai/Cargo.toml crates/just-ai/Cargo.toml
COPY crates/action-versions/Cargo.toml crates/action-versions/Cargo.toml
COPY crates/generate-book/Cargo.toml crates/generate-book/Cargo.toml
# Create dummy src to cache dependencies
RUN mkdir -p crates/just-ai/src crates/action-versions/src crates/generate-book/src && \
echo "fn main() {}" > crates/just-ai/src/main.rs && \
echo "fn main() {}" > crates/action-versions/src/main.rs && \
echo "fn main() {}" > crates/generate-book/src/main.rs
# Build dependencies - build from crate root (not workspace)
RUN cargo build --release --manifest-path crates/just-ai/Cargo.toml 2>/dev/null || true
# Copy actual source
COPY crates/just-ai/src crates/just-ai/src
COPY crates/action-versions/src crates/action-versions/src
COPY crates/generate-book/src crates/generate-book/src
COPY agent/ agent/
COPY just-ai.toml ./
# Build the binary
RUN cargo build --release --manifest-path crates/just-ai/Cargo.toml --locked
# Build just for justfile execution
RUN cargo install just --locked --root /app/just-install
# ===================================================================
# Runtime stage
FROM debian:bookworm-slim AS runtime
# Install runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
libssl3 \
&& rm -rf /var/lib/apt/lists/*
# Copy just from builder
COPY --from=builder /app/just-install/bin/just /usr/local/bin/just
# Create non-root user
RUN useradd -m -u 1000 -s /bin/bash justai
# Copy binary from builder
COPY --from=builder /app/crates/just-ai/target/release/just-ai /usr/local/bin/just-ai
# Set up data directory
RUN mkdir -p /home/justai/.local/share/just-ai && chown -R justai:justai /home/justai/.local
# Switch to non-root user
USER justai
WORKDIR /workspace
# Default environment
ENV JUST_AI_DATA_DIR=/home/justai/.local/share/just-ai
# Entrypoint
ENTRYPOINT ["just-ai"]
CMD ["--help"]