initial-commit

This commit is contained in:
Guillaume GRABÉ
2026-05-12 17:06:43 +02:00
commit 051a080dfa
110 changed files with 26377 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
# Build stage
FROM rust:1.85-slim as builder
# Install build dependencies
RUN apt-get update && apt-get install -y \
pkg-config \
libssl-dev \
protobuf-compiler \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy manifests
COPY Cargo.toml Cargo.lock ./
COPY charybdis-server/Cargo.toml ./charybdis-server/
COPY plugins/defectdojo/Cargo.toml ./plugins/defectdojo/
COPY plugins/dependencytrack/Cargo.toml ./plugins/dependencytrack/
COPY plugins/keycloak/Cargo.toml ./plugins/keycloak/
# Create dummy source files to cache dependencies
RUN mkdir -p src && \
echo "fn main() {}" > src/main.rs && \
mkdir -p charybdis-server/src && \
echo "fn main() {}" > charybdis-server/src/main.rs && \
mkdir -p plugins/defectdojo/src && \
echo "fn main() {}" > plugins/defectdojo/src/lib.rs && \
mkdir -p plugins/dependencytrack/src && \
echo "fn main() {}" > plugins/dependencytrack/src/lib.rs && \
mkdir -p plugins/keycloak/src && \
echo "fn main() {}" > plugins/keycloak/src/lib.rs
# Build dependencies (cached layer)
RUN cargo build --release && \
rm -rf src charybdis-server/src plugins/defectdojo/src plugins/dependencytrack/src plugins/keycloak/src
# Copy source code
COPY . .
# Build real application
RUN cargo build --release --bin charybdis
# Runtime stage
FROM debian:bookworm-slim
# Install runtime dependencies
RUN apt-get update && apt-get install -y \
ca-certificates \
libssl3 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy binary from builder
COPY --from=builder /app/target/release/charybdis /usr/local/bin/charybdis
# Copy config template
COPY config.toml.example /app/config.toml.example
# Create non-root user
RUN useradd -m -u 1000 charybdis && \
chown -R charybdis:charybdis /app
USER charybdis
# Expose ports
EXPOSE 50051 8080
# Health check
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \
CMD test -f /tmp/charybdis.pid || exit 1
ENTRYPOINT ["charybdis"]