diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index a9034e4..a0d8a15 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -31,6 +31,23 @@ jobs: run: | docker build -f Dockerfile -t key-cycle-proxy . + - name: Test Docker image + run: | + # Start container in background + docker run -d --name test-container -p 8080:8080 -e OPENAI_KEYS="sk-test-key" key-cycle-proxy + # Wait for container to start + sleep 5 + # Check if container is still running + if ! docker ps | grep test-container; then + echo "Container failed to start" + docker logs test-container + exit 1 + fi + echo "Docker image smoke test passed" + # Stop and remove container + docker stop test-container + docker rm test-container + - name: Tag and push bot image run: | docker tag key-cycle-proxy:latest ghcr.io/berry-13/key-cycle-proxy:${{ github.sha }} diff --git a/Dockerfile b/Dockerfile index 65dea4f..a8cb683 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,19 @@ # Multi-stage build for Rust application -FROM rust:1.70 as builder +FROM rust:1.82 as builder + +# Update CA certificates for HTTPS +RUN apt-get update && \ + apt-get install -y ca-certificates && \ + rm -rf /var/lib/apt/lists/* WORKDIR /app # Copy dependency files first for better caching COPY Cargo.toml Cargo.lock ./ +# Copy benches directory for Cargo.toml manifest validation +COPY benches ./benches + # Create a dummy main.rs to build dependencies RUN mkdir src && echo "fn main() {}" > src/main.rs RUN cargo build --release diff --git a/README.md b/README.md index bc06de9..f604d16 100644 --- a/README.md +++ b/README.md @@ -240,7 +240,7 @@ cargo build --release --locked ### Docker Production ```dockerfile -FROM rust:1.70 as builder +FROM rust:1.82 as builder WORKDIR /app COPY . . RUN cargo build --release