Merge pull request #12 from ravitejb/main
feat: add pg_cron extension for cron jobs
This commit is contained in:
commit
611bfbbc2b
@ -3,7 +3,7 @@
|
|||||||
# Copyright (c) 2021-2022 Cisco Systems, Inc. and others. All rights reserved.
|
# Copyright (c) 2021-2022 Cisco Systems, Inc. and others. All rights reserved.
|
||||||
#
|
#
|
||||||
# Build:
|
# Build:
|
||||||
# docker build --platform linux/amd64 -t openbmp/postgres:2.1.0 .
|
# DOCKER_BUILDKIT=1 docker build --platform linux/amd64 -t openbmp/postgres:2.1.0 .
|
||||||
#
|
#
|
||||||
# Run:
|
# Run:
|
||||||
# docker run --rm -it -p 5432:5432 \
|
# docker run --rm -it -p 5432:5432 \
|
||||||
@ -12,8 +12,33 @@
|
|||||||
# -e POSTGRES_DB=openbmp \
|
# -e POSTGRES_DB=openbmp \
|
||||||
# openbmp/postgres:2.1.0
|
# openbmp/postgres:2.1.0
|
||||||
|
|
||||||
|
# -----------------------------------------------
|
||||||
|
# stage: Build
|
||||||
|
# -----------------------------------------------
|
||||||
|
FROM timescale/timescaledb:2.5.1-pg14 AS build
|
||||||
|
|
||||||
|
ENV PG_CRON_VERSION 1.3.0
|
||||||
|
|
||||||
|
WORKDIR /ws
|
||||||
|
|
||||||
|
RUN apk update \
|
||||||
|
&& apk add --no-cache --virtual .build-deps build-base ca-certificates clang-dev llvm12 openssl
|
||||||
|
|
||||||
|
## Install pg_cron
|
||||||
|
RUN wget -O pg_cron.tgz https://github.com/citusdata/pg_cron/archive/v$PG_CRON_VERSION.tar.gz \
|
||||||
|
&& tar xvzf pg_cron.tgz && cd pg_cron-$PG_CRON_VERSION/ \
|
||||||
|
&& sed -i.bak -e 's/-Werror//g' Makefile \
|
||||||
|
&& sed -i.bak -e 's/-Wno-implicit-fallthrough//g' Makefile \
|
||||||
|
&& make
|
||||||
|
|
||||||
|
# -----------------------------------------------
|
||||||
|
# stage: Final container
|
||||||
|
# -----------------------------------------------
|
||||||
|
|
||||||
FROM timescale/timescaledb:2.5.1-pg14
|
FROM timescale/timescaledb:2.5.1-pg14
|
||||||
|
|
||||||
|
ENV PG_CRON_VERSION 1.3.0
|
||||||
|
|
||||||
# Current/working dir
|
# Current/working dir
|
||||||
VOLUME ["/ws"]
|
VOLUME ["/ws"]
|
||||||
WORKDIR /ws
|
WORKDIR /ws
|
||||||
@ -37,12 +62,16 @@ RUN apk update \
|
|||||||
&& sed -i -e "s/^\#*max_wal_size.*=.*/max_wal_size = 10GB/" /usr/local/share/postgresql/postgresql.conf.sample \
|
&& sed -i -e "s/^\#*max_wal_size.*=.*/max_wal_size = 10GB/" /usr/local/share/postgresql/postgresql.conf.sample \
|
||||||
&& sed -i -e "s/^\#*ssl[ ]*=.*/ssl = on/" /usr/local/share/postgresql/postgresql.conf.sample \
|
&& sed -i -e "s/^\#*ssl[ ]*=.*/ssl = on/" /usr/local/share/postgresql/postgresql.conf.sample \
|
||||||
&& sed -i -e "s/^\#*ssl_cert_file.*=.*/ssl_cert_file = \'\/psql_server.crt\'/" /usr/local/share/postgresql/postgresql.conf.sample \
|
&& sed -i -e "s/^\#*ssl_cert_file.*=.*/ssl_cert_file = \'\/psql_server.crt\'/" /usr/local/share/postgresql/postgresql.conf.sample \
|
||||||
&& sed -i -e "s/^\#*ssl_key_file.*=.*/ssl_key_file = \'\/psql_server.key\'/" /usr/local/share/postgresql/postgresql.conf.sample
|
&& sed -i -e "s/^\#*ssl_key_file.*=.*/ssl_key_file = \'\/psql_server.key\'/" /usr/local/share/postgresql/postgresql.conf.sample \
|
||||||
|
&& sed -i -e "s/^shared_preload_libraries.*/shared_preload_libraries = 'timescaledb,pg_cron'/g" /usr/local/share/postgresql/postgresql.conf.sample
|
||||||
# Init timesries location
|
|
||||||
RUN echo 'mkdir -p /var/lib/postgresql/ts/data' > /docker-entrypoint-initdb.d/0_obmp_init.sh \
|
|
||||||
&& echo 'chmod 0700 /var/lib/postgresql/ts/data' >> /docker-entrypoint-initdb.d/0_obmp_init.sh \
|
|
||||||
&& echo 'psql -U $POSTGRES_USER -c "CREATE TABLESPACE timeseries LOCATION '\''/var/lib/postgresql/ts/data'\'';" $POSTGRES_DB' >> /docker-entrypoint-initdb.d/0_obmp_init.sh
|
|
||||||
|
|
||||||
|
|
||||||
|
COPY --chmod=755 --from=build /ws/pg_cron-$PG_CRON_VERSION/pg_cron.so /usr/local/lib/postgresql/pg_cron.so
|
||||||
|
COPY --chmod=644 --from=build /ws/pg_cron-$PG_CRON_VERSION/pg_cron.control /usr/local/share/postgresql/extension/pg_cron.control
|
||||||
|
COPY --chmod=644 --from=build /ws/pg_cron-$PG_CRON_VERSION/pg_cron--1.0--1.1.sql /usr/local/share/postgresql/extension/pg_cron--1.0--1.1.sql
|
||||||
|
COPY --chmod=644 --from=build /ws/pg_cron-$PG_CRON_VERSION/pg_cron--1.1--1.2.sql /usr/local/share/postgresql/extension/pg_cron--1.1--1.2.sql
|
||||||
|
COPY --chmod=644 --from=build /ws/pg_cron-$PG_CRON_VERSION/pg_cron--1.2--1.3.sql /usr/local/share/postgresql/extension/pg_cron--1.2--1.3.sql
|
||||||
|
COPY --chmod=644 --from=build /ws/pg_cron-$PG_CRON_VERSION/pg_cron--1.0.sql /usr/local/share/postgresql/extension/pg_cron--1.0.sql
|
||||||
|
|
||||||
|
ADD --chmod=755 scripts/0_obmp_init.sh /docker-entrypoint-initdb.d/0_obmp_init.sh
|
||||||
|
## providing db name for cron metadata tables
|
||||||
|
RUN echo "cron.database_name = 'openbmp'" >> /usr/local/share/postgresql/postgresql.conf.sample
|
||||||
|
|||||||
16
postgres/scripts/0_obmp_init.sh
Executable file
16
postgres/scripts/0_obmp_init.sh
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# postgres: Init script
|
||||||
|
#
|
||||||
|
# Copyright (c) 2021 Cisco Systems, Inc. and Tim Evens. All rights reserved.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# Init timesries location
|
||||||
|
mkdir -p /var/lib/postgresql/ts/data
|
||||||
|
chmod 0700 /var/lib/postgresql/ts/data
|
||||||
|
psql -U $POSTGRES_USER -c "CREATE TABLESPACE timeseries LOCATION '/var/lib/postgresql/ts/data';" $POSTGRES_DB
|
||||||
|
|
||||||
|
# Config pg cron to database schema
|
||||||
|
psql -U $POSTGRES_USER -c "CREATE EXTENSION pg_cron;" $POSTGRES_DB
|
||||||
|
psql -U $POSTGRES_USER -c "GRANT USAGE ON SCHEMA cron TO $POSTGRES_USER;" $POSTGRES_DB
|
||||||
Loading…
x
Reference in New Issue
Block a user