stack/docker/postgres-with-extensions/Dockerfile
2025-02-13 18:57:02 +01:00

34 lines
1.2 KiB
Docker

FROM postgres:15
RUN apt-get update && apt-get install -y \
git \
build-essential \
libpq-dev \
postgresql-server-dev-15
# Install HypoPG
RUN git clone https://github.com/HypoPG/hypopg.git /hypopg
RUN cd /hypopg && make install
# Install index_advisor
RUN git clone https://github.com/supabase/index_advisor.git /index_advisor
RUN cd /index_advisor && make install
# Write initialization SQL
RUN echo "CREATE EXTENSION pg_stat_statements;" >> /docker-entrypoint-initdb.d/init.sql
RUN echo "CREATE EXTENSION hypopg;" >> /docker-entrypoint-initdb.d/init.sql
RUN echo "CREATE EXTENSION index_advisor;" >> /docker-entrypoint-initdb.d/init.sql
RUN echo "CREATE ROLE anon;" >> /docker-entrypoint-initdb.d/init.sql
RUN echo "CREATE ROLE authenticated;" >> /docker-entrypoint-initdb.d/init.sql
# Add args to Postgres entrypoint
ENTRYPOINT ["sh", "-c", "\
# Add delay if POSTGRES_DELAY_MS is set \
if [ $POSTGRES_DELAY_MS -gt 0 ]; then \
apt-get update && apt-get install -y iproute2 && tc qdisc add dev eth0 root netem delay ${POSTGRES_DELAY_MS}ms; \
fi; \
\
# Start Postgres with extensions enabled \
exec docker-entrypoint.sh postgres -c shared_preload_libraries='pg_stat_statements' -c pg_stat_statements.track=all \
"]