diff --git a/Dockerfile b/Dockerfile index aa57776..7fb3549 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,9 +18,17 @@ RUN cargo build --release # Stage 3: Final image FROM debian:bookworm-slim -RUN apt-get update && apt-get install -y ca-certificates libssl3 && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y ca-certificates libssl3 postgresql-16 && rm -rf /var/lib/apt/lists/* + +ENV PATH="/usr/lib/postgresql/16/bin:$PATH" +ENV PGDATA=/var/lib/postgresql/data +ENV DATABASE_URL=postgres://mercury:mercury@127.0.0.1/mercury + WORKDIR /app COPY --from=api-builder /app/target/release/mercury . COPY --from=ui-builder /ui/dist ./ui/dist +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + EXPOSE 3000 -CMD ["./mercury"] +ENTRYPOINT ["/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..5c9a391 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,20 @@ +#!/bin/sh +set -e + +PGDATA="${PGDATA:-/var/lib/postgresql/data}" +PGLOG="/var/log/postgresql/postgresql.log" + +mkdir -p "$PGDATA" /var/log/postgresql +chown postgres:postgres "$PGDATA" /var/log/postgresql + +if [ ! -f "$PGDATA/PG_VERSION" ]; then + su -s /bin/sh postgres -c "initdb -D $PGDATA" + su -s /bin/sh postgres -c "pg_ctl start -D $PGDATA -w -l $PGLOG" + su -s /bin/sh postgres -c "psql postgres -c \"CREATE USER mercury WITH PASSWORD 'mercury';\"" + su -s /bin/sh postgres -c "psql postgres -c \"CREATE DATABASE mercury OWNER mercury;\"" + su -s /bin/sh postgres -c "pg_ctl stop -D $PGDATA -w" +fi + +su -s /bin/sh postgres -c "pg_ctl start -D $PGDATA -w -l $PGLOG" + +exec /app/mercury