diff options
Diffstat (limited to 'build/postgrest')
-rw-r--r-- | build/postgrest/Dockerfile | 30 | ||||
-rwxr-xr-x | build/postgrest/entrypoint.sh | 23 |
2 files changed, 53 insertions, 0 deletions
diff --git a/build/postgrest/Dockerfile b/build/postgrest/Dockerfile new file mode 100644 index 0000000..747052f --- /dev/null +++ b/build/postgrest/Dockerfile @@ -0,0 +1,30 @@ +FROM alpine:latest + +# install packages +RUN apk add --no-cache tini wget curl shadow +RUN rm -fr /var/cache/apk/* + +# setup main user +RUN adduser -D postgrest +RUN groupmod --gid 1000 postgrest +RUN usermod --uid 1000 postgrest + +# install postgrest +RUN wget "https://github.com/PostgREST/postgrest/releases/download/v12.2.3/postgrest-v12.2.3-linux-static-x64.tar.xz" -O /tmp/postgrest.tar.xz +RUN tar xJf /tmp/postgrest.tar.xz -C /usr/local/bin +RUN rm /tmp/postgrest.tar.xz + +# copy scripts +COPY ./entrypoint.sh /usr/local/bin/entrypoint.sh + +# remove build packages +RUN apk del shadow + +# make the dirs +RUN mkdir -p /etc/postgrest.d && \ + chown postgrest:postgrest /etc/postgrest.d + +# do the +USER postgrest +ENTRYPOINT ["/sbin/tini", "--"] +CMD ["/usr/local/bin/entrypoint.sh"] diff --git a/build/postgrest/entrypoint.sh b/build/postgrest/entrypoint.sh new file mode 100755 index 0000000..6a944f2 --- /dev/null +++ b/build/postgrest/entrypoint.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +config=/etc/postgrest.d/postgrest.conf + +JWT_SECRET="$API_SECRET" + +PGRST_DB_URI="postgres://authenticator:postgrest@postgres:5432/$POSTGRES_DB" +PGRST_ROLE="$API_ROLE" +PGRST_SCHEMA="$API_SCHEMA" + +rm -fr "$config" +touch "$config" +{ + printf 'db-uri = "%s"\n' "$PGRST_DB_URI"; + printf 'db-anon-role = "%s"\n' "$PGRST_ROLE"; + printf 'db-schemas = "%s"\n' "$PGRST_SCHEMA"; + printf 'jwt-secret = "%s"\n' "$JWT_SECRET"; + printf 'jwt-secret-is-base64 = false\n'; + printf 'server-host = "*"\n'; + printf 'server-port = 3000\n'; +} >> $config + +exec -a /usr/local/bin/postgrest /usr/local/bin/postgrest "$config" |