fix containerization

This commit is contained in:
Brent Schroeter 2025-12-01 23:59:46 -08:00
parent 9818df10f7
commit efd6cf1fb3
5 changed files with 28 additions and 8 deletions

View file

@ -3,6 +3,6 @@
example.env
build
dev-services
bacon.toml
target
node_modules
.DS_Store

1
.gitignore vendored
View file

@ -1,4 +1,5 @@
target
.sqlx
.env
.DS_Store
node_modules

View file

@ -1,5 +1,6 @@
FROM lukemathwalker/cargo-chef:latest-rust-1.87.0 AS chef
FROM docker.io/rustlang/rust:nightly AS chef
WORKDIR /app
RUN cargo install cargo-chef && rm -rf $CARGO_HOME/registry/
FROM chef AS planner
COPY . .
@ -11,16 +12,21 @@ COPY --from=planner /app/recipe.json recipe.json
RUN cargo chef cook --release --recipe-path recipe.json
# Build application
COPY . .
RUN cargo build --release --bin phonograph
RUN cargo build --release --bin phono-server
# We do not need the Rust toolchain to run the binary!
FROM debian:bookworm-slim AS runtime
RUN apt-get update && apt-get install -y libpq-dev
WORKDIR /app
COPY --from=builder /app/target/release/phonograph /usr/local/bin
RUN apt-get update && apt-get install -y libpq-dev ca-certificates
# User should be set by UID to make the K8s `runAsNonRoot` check's job easier.
RUN useradd -m -u 1000 app
USER 1000
WORKDIR /home/app
COPY --from=builder /app/target/release/phono-server /usr/local/bin
COPY ./css_dist ./css_dist
COPY ./js_dist ./js_dist
COPY ./static ./static
ENTRYPOINT ["/usr/local/bin/phonograph"]
ENTRYPOINT ["/usr/local/bin/phono-server"]

View file

@ -0,0 +1,6 @@
create user app createdb createrole password 'guest';
grant connect on database postgres to app;
create schema app;
grant usage, create on schema app to app;
alter role app set search_path = app;

View file

@ -4,6 +4,7 @@ rebar = "latest"
rust = { version = "nightly", components = "rust-analyzer,clippy,rustc-codegen-cranelift-preview" }
watchexec = "latest"
"github:sass/dart-sass" = "1.89.2"
"cargo:sqlx-cli" = "0.8.6"
[tasks.dev-services]
run = "docker compose up"
@ -30,6 +31,12 @@ run = "docker compose up"
[tasks.pg-container]
run = "sh ./dev-services/run-pg-with-apple-container.sh"
[tasks.migrations]
dir = "./phono-models"
run = "sqlx migrate run"
[tasks.prepare-sqlx]
run = "cargo sqlx prepare --workspace"
[env]
RUST_LOG = "debug"
RUST_BACKTRACE = "1"