diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d774301 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +# Stage 1: Build dependency cache and compile application +FROM rust:1.95-bookworm AS builder + +RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +# Create dummy source files for caching build dependencies +COPY Cargo.toml Cargo.lock ./ +RUN mkdir src && echo "fn main() {}" > src/main.rs && touch src/lib.rs +RUN cargo build --release + +# Copy actual source files +COPY src ./src +# Touch files to force rebuild with real source +RUN touch src/main.rs src/lib.rs +RUN cargo build --release + +# Stage 2: Minimal runtime image +FROM debian:bookworm-slim + +RUN apt-get update && apt-get install -y ca-certificates openssl && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +# Copy the built binary +COPY --from=builder /app/target/release/nosync /app/nosync + +CMD ["/app/nosync"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..37c21b2 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +services: + nosync: + image: ghcr.io/exchanges-lab/nosync:v1.0 + container_name: nosync + env_file: + - .env + volumes: + - ./data:/app/data + networks: + - cycle + restart: unless-stopped + +networks: + cycle: + external: true