Sign inSign up

muen/postgres

By muen

Updated 7 months ago

Image
0

2.5K

muen/postgres repository overview

https://gist.github.com/eladtamary/5fb6317d033284671dde9877a105775b

Dockerfile

pg96
FROM postgres:9.6.8
RUN apt-get update && apt-get install -y --no-install-recommends \
	curl \
	ca-certificates \
	build-essential \
	postgresql-server-dev-${PG_MAJOR} \
	libssl-dev \
	libkrb5-dev
	
RUN mkdir -p /tmp/pgaudit && cd /tmp/pgaudit && curl -L https://github.com/pgaudit/pgaudit/archive/1.1.1.tar.gz | tar xz --strip 1
RUN make -C /tmp/pgaudit/ install USE_PGXS=1

COPY ./my-docker-entrypoint.sh /usr/local/bin/
COPY init.sql /docker-entrypoint-initdb.d/

ENTRYPOINT ["my-docker-entrypoint.sh"]
CMD ["postgres"]
pg14
FROM postgres:14.6

# 安装依赖并构建 pgaudit
RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    ca-certificates \
    git \
    postgresql-server-dev-${PG_MAJOR} \
    build-essential \
    libssl-dev \
    libkrb5-dev \
    libxml2-dev \
    zlib1g-dev \
    clang-11 \
    llvm-11 \
    llvm-11-dev \
    llvm-11-tools && \
    git clone https://github.com/pgaudit/pgaudit.git -b REL_14_STABLE /tmp/pgaudit && \
    make -C /tmp/pgaudit/ install USE_PGXS=1 && \
    apt-get remove -y build-essential clang-11 llvm-11 llvm-11-dev llvm-11-tools git && \
    apt-get autoremove -y && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/*

# 复制脚本和 SQL 文件
COPY ./my-docker-entrypoint.sh /usr/local/bin/
COPY init.sql /docker-entrypoint-initdb.d/

# 设置入口点和默认命令
ENTRYPOINT ["my-docker-entrypoint.sh"]
CMD ["postgres"]

init.sql

CREATE ROLE auditor;
SET pgaudit.role TO 'auditor';
ALTER SYSTEM SET pgaudit.role = 'auditor';
SELECT pg_reload_conf();

my-docker-entrypoint.sh

#!/bin/bash

IS_AUDIT_LOG_ENABLED=${IS_AUDIT_LOG_ENABLED:-false}
echo "IS_AUDIT_LOG_ENABLED=$IS_AUDIT_LOG_ENABLED"

PGAUDIT_LOG_ARGS=""
if [ ${IS_AUDIT_LOG_ENABLED} = "true" ] ; then
    PGAUDIT_LOG=${PGAUDIT_LOG:-}
    echo "PGAUDIT_LOG=$PGAUDIT_LOG"

    PGAUDIT_LOG_LEVEL=${PGAUDIT_LOG_LEVEL:-LOG}
    echo "PGAUDIT_LOG_LEVEL=$PGAUDIT_LOG_LEVEL"

    PGAUDIT_LOG_CATALOG=${PGAUDIT_LOG_CATALOG:-on}
    echo "PGAUDIT_LOG_CATALOG=$PGAUDIT_LOG_CATALOG"

    PGAUDIT_LOG_PARAMETER=${PGAUDIT_LOG_PARAMETER:-on}
    echo "PGAUDIT_LOG_PARAMETER=$PGAUDIT_LOG_PARAMETER"
    
    PGAUDIT_LOG_ARGS="-c shared_preload_libraries=pgaudit -c log_destination=csvlog -c logging_collector=on -c pgaudit.log=$PGAUDIT_LOG -c pgaudit.log_level=$PGAUDIT_LOG_LEVEL -c pgaudit.log_catalog=$PGAUDIT_LOG_CATALOG -c pgaudit.log_parameter=$PGAUDIT_LOG_PARAMETER "
    echo "PGAUDIT_LOG_ARGS=$PGAUDIT_LOG_ARGS"
fi

echo Running cmd: docker-entrypoint.sh "$@" $PGAUDIT_LOG_ARGS
exec docker-entrypoint.sh "$@" $PGAUDIT_LOG_ARGS

Tag summary

Content type

Image

Digest

sha256:7414f8199

Size

351 MB

Last updated

7 months ago

docker pull muen/postgres