committed by
Wolfgang Walther
parent
f2f639e484
commit
b7fc393e49
@@ -2,8 +2,8 @@
|
||||
|
||||
In order to build an optimal PostgREST Docker image, we create the image from
|
||||
scratch (i.e., without a parent image like `debian` or `alpine`), and only
|
||||
include the files that are essential for running PostgREST (the static
|
||||
PostgREST binary and a `postgrest.conf`).
|
||||
include the file that is essential for running PostgREST: the static
|
||||
PostgREST binary.
|
||||
|
||||
This is similar to what you would get with the following `Dockerfile`:
|
||||
|
||||
@@ -17,12 +17,6 @@ FROM scratch
|
||||
# need to include for running the application.
|
||||
ADD /absolute/path/to/postgrest /bin/postgrest
|
||||
|
||||
# Include a default configuration file.
|
||||
ADD /absolute/path/to/postgrest.conf /etc/postgrest.conf
|
||||
|
||||
ENV PGRST_DB_URI= \
|
||||
...
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
# This is the user id that Docker will run our image under by default. Note
|
||||
@@ -32,7 +26,7 @@ EXPOSE 3000
|
||||
# can be run under any user you specify.
|
||||
USER 1000
|
||||
|
||||
CMD [ "/bin/postgrest", "/etc/postgrest.conf" ]
|
||||
CMD [ "/bin/postgrest" ]
|
||||
```
|
||||
|
||||
# Building the Docker image with Nix
|
||||
|
||||
+2
-28
@@ -4,9 +4,6 @@
|
||||
, checkedShellScript
|
||||
}:
|
||||
let
|
||||
config =
|
||||
./postgrest.conf;
|
||||
|
||||
image =
|
||||
dockerTools.buildImage {
|
||||
name = "postgrest";
|
||||
@@ -19,34 +16,11 @@ let
|
||||
|
||||
extraCommands =
|
||||
''
|
||||
mkdir etc
|
||||
cp ${config} etc/postgrest.conf
|
||||
rmdir share
|
||||
'';
|
||||
|
||||
config = {
|
||||
Cmd = [ "/bin/postgrest" "/etc/postgrest.conf" ];
|
||||
Env = [
|
||||
"PGRST_DB_URI=postgresql://?user=postgres"
|
||||
"PGRST_DB_SCHEMA=public"
|
||||
"PGRST_DB_ANON_ROLE="
|
||||
"PGRST_DB_POOL=100"
|
||||
"PGRST_DB_POOL_TIMEOUT=10"
|
||||
"PGRST_DB_EXTRA_SEARCH_PATH=public"
|
||||
"PGRST_DB_CHANNEL=pgrst"
|
||||
"PGRST_DB_CHANNEL_ENABLED=false"
|
||||
"PGRST_SERVER_HOST=*4"
|
||||
"PGRST_SERVER_PORT=3000"
|
||||
"PGRST_OPENAPI_SERVER_PROXY_URI="
|
||||
"PGRST_JWT_SECRET="
|
||||
"PGRST_SECRET_IS_BASE64=false"
|
||||
"PGRST_JWT_AUD="
|
||||
"PGRST_MAX_ROWS="
|
||||
"PGRST_PRE_REQUEST="
|
||||
"PGRST_ROLE_CLAIM_KEY=.role"
|
||||
"PGRST_ROOT_SPEC="
|
||||
"PGRST_RAW_MEDIA_TYPES="
|
||||
];
|
||||
Cmd = [ "/bin/postgrest" ];
|
||||
User = "1000";
|
||||
ExposedPorts = {
|
||||
"3000/tcp" = { };
|
||||
@@ -65,4 +39,4 @@ buildEnv
|
||||
{
|
||||
name = "postgrest-docker";
|
||||
paths = [ load.bin ];
|
||||
} // { inherit image config; }
|
||||
} // { inherit image; }
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
# See https://postgrest.org/en/stable/configuration.html#configuration
|
||||
|
||||
# Required settings
|
||||
|
||||
db-uri = "$(PGRST_DB_URI)"
|
||||
db-schema = "$(PGRST_DB_SCHEMA)"
|
||||
db-anon-role = "$(PGRST_DB_ANON_ROLE)"
|
||||
|
||||
# Optional settings
|
||||
|
||||
db-pool = "$(PGRST_DB_POOL)"
|
||||
db-pool-timeout = "$(PGRST_DB_POOL_TIMEOUT)"
|
||||
db-extra-search-path = "$(PGRST_DB_EXTRA_SEARCH_PATH)"
|
||||
|
||||
db-channel = "$(PGRST_DB_CHANNEL)"
|
||||
db-channel-enabled = "$(PGRST_DB_CHANNEL_ENABLED)"
|
||||
|
||||
server-host = "$(PGRST_SERVER_HOST)"
|
||||
server-port = "$(PGRST_SERVER_PORT)"
|
||||
|
||||
openapi-server-proxy-uri = "$(PGRST_OPENAPI_SERVER_PROXY_URI)"
|
||||
jwt-secret = "$(PGRST_JWT_SECRET)"
|
||||
secret-is-base64 = "$(PGRST_SECRET_IS_BASE64)"
|
||||
jwt-aud = "$(PGRST_JWT_AUD)"
|
||||
role-claim-key = "$(PGRST_ROLE_CLAIM_KEY)"
|
||||
|
||||
max-rows = "$(PGRST_MAX_ROWS)"
|
||||
pre-request = "$(PGRST_PRE_REQUEST)"
|
||||
root-spec = "$(PGRST_ROOT_SPEC)"
|
||||
raw-media-types = "$(PGRST_RAW_MEDIA_TYPES)"
|
||||
@@ -94,17 +94,12 @@ let
|
||||
| ${jq}/bin/jq -r .token
|
||||
)"
|
||||
|
||||
# Plug the default config file into the full description.
|
||||
defaultConfig="$(cat ${docker.config})"
|
||||
export DEFAULT_CONFIG="$defaultConfig"
|
||||
fullDescription="$(${envsubst}/bin/envsubst < ${fullDescription})"
|
||||
|
||||
# Patch the full description.
|
||||
# Patch both descriptions.
|
||||
responseCode="$(
|
||||
${curl}/bin/curl -s --write-out "%{response_code}" \
|
||||
--output /dev/null -H "Authorization: JWT $token" -X PATCH \
|
||||
--data-urlencode description@${description} \
|
||||
--data-urlencode "full_description=$fullDescription" \
|
||||
--data-urlencode full_description@${fullDescription} \
|
||||
"https://hub.docker.com/v2/repositories/$DOCKER_REPO/postgrest/"
|
||||
)"
|
||||
|
||||
|
||||
@@ -15,13 +15,8 @@ write from scratch.
|
||||
To learn how to use this container, see the [PostgREST Docker
|
||||
documentation](https://postgrest.com/en/stable/install.html#docker).
|
||||
|
||||
You can configure the PostgREST image by setting the enviroment variables used
|
||||
in the default `/etc/postgrest.conf` file or overriding that file. This is the
|
||||
default configuration file:
|
||||
|
||||
```
|
||||
$DEFAULT_CONFIG
|
||||
```
|
||||
You can configure the PostgREST image by setting
|
||||
[enviroment variables](https://postgrest.org/en/stable/configuration.html).
|
||||
|
||||
# How this image is built
|
||||
|
||||
|
||||
Reference in New Issue
Block a user