diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9f209b9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,33 @@ +# Ignore target directory +target/ + +# Ignore editor-specific files +.vscode/ +.idea/ + +# Ignore any generated files +**/*.rs.bk + +# Ignore any temporary files +*.swp +*.swo +*.bak +*.tmp +*.log +# Ignore CI/CD files +.github/ +# Ignore data_cleaning +data_cleaning/ +# Ignore gitingore +.gitignore +# Ignore dockerignore +.dockerignore +# ignore dockerfile +Dockerfile +# Ignore readme +README.md +# Ignore data +data/ +# except what's needed +!data/new_large/ +!data/new_small/ diff --git a/.env b/.env deleted file mode 100755 index 1fdf40f..0000000 --- a/.env +++ /dev/null @@ -1 +0,0 @@ -DATABASE_URL="sqlite:./actors.db" \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7f5a7c1 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,50 @@ +# Builder stage +FROM lukemathwalker/cargo-chef:latest-rust-1 AS chef +WORKDIR /app/ + +RUN apt update && apt install lld clang -y + +FROM chef AS planner + +COPY . . + +RUN cargo chef prepare --recipe-path recipe.json + +FROM chef AS builder + +COPY --from=planner /app/recipe.json recipe.json + +RUN cargo chef cook --release --recipe-path recipe.json + +COPY . . + +ENV SQLX_OFFLINE=true + +RUN cargo build --release --bin celeb_app + +FROM debian:bookworm-slim AS runtime + +WORKDIR /app + +RUN apt-get update -y \ + && apt-get install -y --no-install-recommends openssl ca-certificates \ + # Clean up + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=builder /app/target/release/celeb_app celeb_app + +COPY configuration configuration + +# move static files to the runtime image +COPY --from=builder /app/static static + +# move actor db +COPY --from=builder /app/actors.db actors.db +# move movie_db csvs +COPY --from=builder /app/data/new_large data/new_large + +ENV APP_ENVIRONMENT=production + +ENTRYPOINT ["./celeb_app"] \ No newline at end of file