From 14efcd73ecfb138eaa7832889cf05a8ce35ddf60 Mon Sep 17 00:00:00 2001 From: Pedro Sanders Date: Sun, 23 Jun 2024 11:25:35 -0400 Subject: [PATCH] build: allow starting without local postgres --- Dockerfile | 24 +++++++++++++++--------- mods/edgeport/Dockerfile | 2 +- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 60b654071..5dd446950 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ## -## Build and pack the service +# Build and pack the service ## FROM alpine:3.19 AS builder LABEL maintainer="Pedro Sanders " @@ -21,7 +21,7 @@ RUN apk add --no-cache --update npm nodejs curl git tini python3 make cmake g++ && chmod +x heplify ## -## Runner +# Runner ## FROM alpine:3.19 AS runner @@ -30,6 +30,8 @@ ARG POSTGRES_USER=postgres ARG POSTGRES_PASSWORD=postgres ARG CA_CERT_SUBJECT="/CN=Self Signed CA" ARG SERVER_CERT_SUBJECT="/CN=localhost" +ARG PRISMA_VERSION=5.9.1 +ARG DATABASE_URL=postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@localhost:5432/routr ENV PKCS12_PASSWORD=$PKCS12_PASSWORD \ PATH_TO_CERTS=/etc/routr/certs \ @@ -42,8 +44,10 @@ ENV PKCS12_PASSWORD=$PKCS12_PASSWORD \ VERIFY_CLIENT_CERT=false \ CA_CERT_SUBJECT=$CA_CERT_SUBJECT \ SERVER_CERT_SUBJECT=$SERVER_CERT_SUBJECT \ - DATABASE_URL=postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@localhost:5432/routr \ - IGNORE_LOOPBACK_FROM_LOCALNETS=true + DATABASE_URL=$DATABASE_URL \ + IGNORE_LOOPBACK_FROM_LOCALNETS=true \ + PRISMA_VERSION=$PRISMA_VERSION \ + START_LOCAL_DB=true WORKDIR /service @@ -71,19 +75,21 @@ RUN apk add --no-cache nodejs npm tini openssl postgresql postgresql-client su-e && chmod +x edgeport.sh convert-to-p12.sh init-postgres.sh \ && chmod 2777 /run/postgresql \ && setcap 'CAP_NET_RAW+eip' /usr/bin/sngrep \ - && export DATABASE_URL=${DATABASE_URL} && su -m postgres -c "/service/init-postgres.sh" \ - && rm -rf /var/cache/apk/* /tmp/* /services/migrations /services/schema.prisma /services/init-postgres.sh \ + && rm -rf /var/cache/apk/* /tmp/* /services/init-postgres.sh \ && rm -rf /root/.npm /root/.config /root/.cache /root/.local \ - && apk del npm postgresql-client libcap + && apk del postgresql-client libcap # Re-mapping the signal from 143 to 0 ENTRYPOINT ["tini", "-v", "-e", "143", "--"] -CMD sh -c "su-exec postgres pg_ctl start -D /var/lib/postgresql/data --options='-h 0.0.0.0' && \ +CMD sh -c "if [ \"$START_LOCAL_DB\" = \"true\" ]; then \ + su-exec postgres pg_ctl start -D /var/lib/postgresql/data --options='-h 0.0.0.0'; \ + fi && \ + DATABASE_URL=${DATABASE_URL} npx prisma@${PRISMA_VERSION} migrate deploy --schema=/service/schema.prisma && \ su-exec $USER ./convert-to-p12.sh $PATH_TO_CERTS $PKCS12_PASSWORD && \ if [ -n \"$HEPLIFY_OPTIONS\" ]; then \ heplify $HEPLIFY_OPTIONS & \ fi && \ sed -i 's|keyStorePassword: .*|keyStorePassword: ${PKCS12_PASSWORD}|g' config/edgeport.yaml && \ sed -i 's|trustStorePassword: .*|trustStorePassword: ${PKCS12_PASSWORD}|g' config/edgeport.yaml && \ - DATABASE_URL=$DATABASE_URL su-exec $USER node ./dist/runner" + su-exec $USER node ./dist/runner" diff --git a/mods/edgeport/Dockerfile b/mods/edgeport/Dockerfile index c481119ab..f00be5374 100644 --- a/mods/edgeport/Dockerfile +++ b/mods/edgeport/Dockerfile @@ -31,7 +31,7 @@ ENV PKCS12_PASSWORD=$PKCS12_PASSWORD \ SERVER_CERT_SUBJECT=$SERVER_CERT_SUBJECT \ IGNORE_LOOPBACK_FROM_LOCALNETS=true \ LOG4J2=/etc/routr/log4j2.yaml \ - JAVA_HOME=/opt/routr/jre + JAVA_HOME=/opt/routr/jre WORKDIR /opt/routr