5 Commits

Author SHA1 Message Date
97cddb4723 - Use now rx3-docker/server:1.2.1-mga9 image. 2025-03-08 13:02:23 +01:00
f2517f786d - Move & Rename repo from Rx3/PostgreSQL-MGA9 to Rx3-Docker/PostgreSQL,
- New version naming standard,
- Now use docker_tools for .env building,
- Use now rx3-docker/server:1.2.0-mga9 image,
- Add /var/log/init, /var/log/supervisor & var/log/postgres volumes,
- Add healthcheck example in compose file.
2024-11-12 17:02:53 +01:00
4d46bd66d3 - Add healthcheck example in compose file. 2024-10-29 09:12:02 +01:00
8f3ea49795 - Now use server-mga9:1.1.3 image,
- Variabilization of external server ports in env & compose file,
- Now use docker_tools for .env building.
2024-10-05 13:11:16 +02:00
6ec93aa56e - Move local database dir form ./pgsql/data to ./pgsql-data,
- Fix support of special chars in User & Database names.
2024-08-31 12:26:19 +02:00
9 changed files with 216 additions and 119 deletions

View File

@@ -1,114 +1,120 @@
# Rx3 PosgreSQL Mageia-9 Docker Image # Rx3-Docker/PosgreSQL Docker Image
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
ARG IMG_URL_PREFIX="rx3" ARG IMG_FROM_URL="rx3-docker/server:latest"
FROM ${IMG_URL_PREFIX}/server-mga9:1.1.2 FROM ${IMG_FROM_URL}
ARG IMG_NAME ARG IMG_NAME
ARG IMG_FULL_NAME ARG IMG_NAME_FULL
ARG IMG_VERSION ARG IMG_VERSION
ARG IMG_MAINTAINER ARG IMG_MAINTAINER
LABEL org.rx3.${IMG_NAME}.name=${IMG_FULL_NAME} LABEL org.rx3.${IMG_NAME}.name=${IMG_NAME_FULL}
LABEL org.rx3.${IMG_NAME}.version=${IMG_VERSION} LABEL org.rx3.${IMG_NAME}.version=${IMG_VERSION}
LABEL org.rx3.${IMG_NAME}.maintainer=${IMG_MAINTAINER} LABEL org.rx3.${IMG_NAME}.maintainer=${IMG_MAINTAINER}
LABEL maintainer=${IMG_MAINTAINER} LABEL maintainer=${IMG_MAINTAINER}
ARG POSTGRESQL_LIB=/var/lib/pgsql ARG POSTGRESQL_LIB
ARG POSTGRESQL_DATA=${POSTGRESQL_LIB}/data ARG POSTGRESQL_LOG
ARG POSTGRESQL_PORT=5432 ARG POSTGRESQL_PORT
ARG POSTSQL_LOG_DIR
#--------------------------------------------------------------------------------------------------- ARG POSTGRESQL_DATA="${POSTGRESQL_LIB}/data"
ARG POSTGRESQLD='#!/bin/bash \n\ ARG POSTSQL_LOG_FILE="${POSTSQL_LOG_DIR}/postsql.log"
\n\
usermod -u ${POSTGRESQL_UID} postgres \n\
groupmod -g ${POSTGRESQL_GID} postgres \n\
\n\ #-----------------------------------------------------------------------------------------------------------------------------
chown -R postgres:postgres '${POSTGRESQL_LIB}' /var/log/postgres /var/run/postgresql \n\ ARG POSTGRESQLD='#!/bin/bash \n\
\n\ \n\
if [[ ! -f '${POSTGRESQL_DATA}/pg_hba.conf' ]] \n\ usermod -u ${POSTGRESQL_UID} postgres \n\
then \n\ groupmod -g ${POSTGRESQL_GID} postgres \n\
echo "ALTER USER postgres WITH PASSWORD `${POSTGRESQL_POSTGRES_PASSWORD}`;" >>/tmp/post.sql \n\ \n\
\n\ chown -R postgres:postgres '${POSTGRESQL_LIB}' /var/log/postgres /var/run/postgresql \n\
if [[ -n "${POSTGRESQL_DATABASE}" ]] \n\ \n\
then \n\ if [[ ! -f '${POSTGRESQL_DATA}/pg_hba.conf' ]] \n\
echo "CREATE DATABASE ${POSTGRESQL_DATABASE};" >>/tmp/post.sql \n\ then \n\
fi \n\ echo "ALTER USER postgres WITH PASSWORD `${POSTGRESQL_POSTGRES_PASSWORD}`;" >>/tmp/post.sql \n\
\n\ \n\
if [[ -n "${POSTGRESQL_USER}" ]] && [[ -n "${POSTGRESQL_PASSWORD}" ]] \n\ if [[ -n "${POSTGRESQL_DATABASE}" ]] \n\
then \n\ then \n\
echo "CREATE USER ${POSTGRESQL_USER} WITH PASSWORD `${POSTGRESQL_PASSWORD}`;" >>/tmp/post.sql \n\ echo "CREATE DATABASE \"${POSTGRESQL_DATABASE}\";" >>/tmp/post.sql \n\
\n\ fi \n\
if [[ -n "${POSTGRESQL_DATABASE}" ]] \n\ \n\
then \n\ if [[ -n "${POSTGRESQL_USER}" ]] && [[ -n "${POSTGRESQL_PASSWORD}" ]] \n\
echo "GRANT ALL PRIVILEGES ON DATABASE ${POSTGRESQL_DATABASE} TO ${POSTGRESQL_USER};" >>/tmp/post.sql \n\ then \n\
fi \n\ echo "CREATE USER \"${POSTGRESQL_USER}\" WITH PASSWORD `${POSTGRESQL_PASSWORD}`;" >>/tmp/post.sql \n\
fi \n\ \n\
\n\ if [[ -n "${POSTGRESQL_DATABASE}" ]] \n\
su - postgres -c "/usr/libexec/postgresql_initdb.sh '${POSTGRESQL_DATA}'" \n\ then \n\
\n\ echo "GRANT ALL PRIVILEGES ON DATABASE \"${POSTGRESQL_DATABASE}\" TO \"${POSTGRESQL_USER}\";" >>/tmp/post.sql \n\
echo "# IPv4 extern connections:" >>'${POSTGRESQL_DATA}'/pg_hba.conf \n\ fi \n\
echo "host all all 0.0.0.0/0 password" >>'${POSTGRESQL_DATA}'/pg_hba.conf \n\ fi \n\
sed -i "s/#port = 5432/listen_addresses=`*`\\n#port = 5432/" '${POSTGRESQL_DATA}'/postgresql.conf \n\ \n\
su - postgres -c "/usr/libexec/postgresql_initdb.sh '${POSTGRESQL_DATA}'" \n\
\n\
echo "# IPv4 extern connections:" >>'${POSTGRESQL_DATA}'/pg_hba.conf \n\
echo "host all all 0.0.0.0/0 password" >>'${POSTGRESQL_DATA}'/pg_hba.conf \n\
sed -i "s/#port = 5432/listen_addresses=`*`\\n#port = 5432/" '${POSTGRESQL_DATA}'/postgresql.conf \n\
fi' fi'
#--------------------------------------------------------------------------------------------------- #-----------------------------------------------------------------------------------------------------------------------------
#command=/usr/bin/pg_ctl start -D '${POSTGRESQL_DATA}' -s -o "-p '${POSTGRESQL_PORT}'" -w -t 300 \n\ #-----------------------------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------- ARG POSTGRESQLD_INI='[program:postgresqld] \n\
ARG POSTGRESQLD_INI='[program:postgresqld] \n\ command=/usr/bin/postgres -D '${POSTGRESQL_DATA}' -p '${POSTGRESQL_PORT}' \n\
command=/usr/bin/postgres -D '${POSTGRESQL_DATA}' -p '${POSTGRESQL_PORT}' \n\
user=postgres' user=postgres'
#--------------------------------------------------------------------------------------------------- #-----------------------------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------- #-----------------------------------------------------------------------------------------------------------------------------
ARG POSTSQL='#!/bin/bash \n\ ARG POSTSQL='#!/bin/bash \n\
\n\ \n\
function log() { echo "$(date --rfc-3339=ns) PostSQL: $*" | tee -a /var/log/postsql.log; } \n\ function log() { echo "$(date --rfc-3339=ns) PostSQL: $*" | tee -a '${POSTSQL_LOG_FILE}'; } \n\
\n\ \n\
log "Starting" \n\ log "Starting" \n\
\n\ \n\
for i in {30..0} \n\ for i in {30..0} \n\
do \n\ do \n\
if psql --username=postgres <<< "SELECT 1" &> /dev/null \n\ if psql --username=postgres <<< "SELECT 1" &> /dev/null \n\
then \n\ then \n\
break \n\ break \n\
fi \n\ fi \n\
\n\ \n\
sleep 1 \n\ sleep 1 \n\
done \n\ done \n\
\n\ \n\
if [ "$i" = 0 ] \n\ if [ "$i" = 0 ] \n\
then \n\ then \n\
log "Unable to connect server" \n\ log "Unable to connect server" \n\
else \n\ else \n\
while read line \n\ while read line \n\
do \n\ do \n\
log "Executing: [${line}]" \n\ log "Executing: [${line}]" \n\
echo ${line} | psql --username=postgres \n\ echo ${line} | psql --username=postgres \n\
done < /tmp/post.sql \n\ done < /tmp/post.sql \n\
fi \n\ fi \n\
\n\ \n\
log "Completed"' log "Completed"'
#--------------------------------------------------------------------------------------------------- #-----------------------------------------------------------------------------------------------------------------------------
#--------------------------------------------------------------------------------------------------- #-----------------------------------------------------------------------------------------------------------------------------
ARG POSTSQL_INI='[program:postsql] \n\ ARG POSTSQL_INI='[program:postsql] \n\
command=/usr/local/sbin/postsql' command=/usr/local/sbin/postsql'
#--------------------------------------------------------------------------------------------------- #-----------------------------------------------------------------------------------------------------------------------------
RUN urpmi --force postgresql15 postgresql15-server postgresql15-pl \ RUN urpmi --force postgresql15 postgresql15-server postgresql15-pl \
&& echo -e "${POSTGRESQLD}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/postgresqld \ && echo -e "${POSTGRESQLD}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/init.d/postgresqld \
&& chmod a+x /etc/init.d/postgresqld \ && chmod a+x /etc/init.d/postgresqld \
&& ln -s /etc/init.d/postgresqld /etc/rcD.d/S30postgresqld \ && ln -s /etc/init.d/postgresqld /etc/rcD.d/S30postgresqld \
&& echo -e "${POSTGRESQLD_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/supervisord.d/postgresqld.ini \ && echo -e "${POSTGRESQLD_INI}" | sed -e "s/\`/'/g" -e 's/ *$//' > /etc/supervisord.d/postgresqld.ini \
&& echo -e "${POSTSQL}" | sed -e "s/\`/'/g" -e 's/ *$//' > /usr/local/sbin/postsql \ && echo -e "${POSTSQL}" | sed -e "s/\`/'/g" -e 's/ *$//' > /usr/local/sbin/postsql \
&& chmod a+x /usr/local/sbin/postsql \ && chmod a+x /usr/local/sbin/postsql \
&& echo -e "${POSTSQL_INI}" | sed -e 's/ *$//' > /etc/supervisord.d/postsql.ini && echo -e "${POSTSQL_INI}" | sed -e 's/ *$//' > /etc/supervisord.d/postsql.ini
VOLUME /var/lib/pgsql VOLUME ${POSTGRESQL_LIB}
VOLUME ${POSTGRESQL_LOG}
EXPOSE 5432 EXPOSE ${POSTGRESQL_PORT}

View File

@@ -1,11 +1,11 @@
Welcome to Rx3/PostgreSQL-Mga9 docker image! Welcome to Rx3-Docker/PostgreSQL docker image!
This is project aims to build a PostgreSQL + Mageia 9 docker image used by others Rx3 packaging projects. This project aims to build a PostgreSQL docker image used by other Rx3 packaging projects.
Features: Features:
- Curtently based on rx3/server-mga9:1.1.2 image, - Curtently based on rx3-docker/server:1.2.1-mga9 image,
- Following env vars supported: - Following env vars supported:
- POSTGRESQL_UID & POSTGRESQL_GID, - POSTGRESQL_UID & POSTGRESQL_GID,
- POSTGRESQL_POSTGRES_PASSWORD, - POSTGRESQL_POSTGRES_PASSWORD,
@@ -19,4 +19,4 @@ Your Rx3 Team.
-- --
arnaud@rx3.net arnaud@rx3.net
https://git.rx3.org/gitea/rx3/postgresql-mga9 https://git.rx3.org/gitea/rx3-docker/postgresql

View File

@@ -1,6 +1,46 @@
------------------------------------------------------------------------------------------------------------------------------------
Rx3-Docker/PostgreSQL V 1.1.1 - A. GIBERT - 2025/03/08
------------------------------------------------------------------------------------------------------------------------------------
- Use now rx3-docker/server:1.2.1-mga9 image.
------------------------------------------------------------------------------------------------------------------------------------
Rx3-Docker/PostgreSQL V 1.1.0 - A. GIBERT - 2024/11/12
------------------------------------------------------------------------------------------------------------------------------------
- Move & Rename repo from Rx3/PostgreSQL-MGA9 to Rx3-Docker/PostgreSQL,
- New version naming standard,
- Now use docker_tools for .env building,
- Use now rx3-docker/server:1.2.0-mga9 image,
- Add /var/log/init, /var/log/supervisor & var/log/postgres volumes,
- Add healthcheck example in compose file.
------------------------------------------------------------------------------------------------------------------------------------
Rx3/PostgreSQL-Mga9 V 1.0.2 - A. GIBERT - 2024/10/05
------------------------------------------------------------------------------------------------------------------------------------
- Now use rx3/server-mga9:1.1.3 image,
- Variabilization of external server ports in env & compose file,
- Now use docker_tools for .env building.
------------------------------------------------------------------------------------------------------------------------------------
Rx3/PostgreSQL-Mga9 V 1.0.1 - A. GIBERT - 2024/08/31
------------------------------------------------------------------------------------------------------------------------------------
- Move local database dir form ./pgsql/data to ./pgsql-data,
- Fix support of special chars in User & Database names.
------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------
Rx3/PostgreSQL-Mga9 V 1.0.0 - A. GIBERT - 2024/08/30 Rx3/PostgreSQL-Mga9 V 1.0.0 - A. GIBERT - 2024/08/30
------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------
- Initial release, - Initial release,
- Based on server-mga9:1.1.2 image. - Based on rx3/server-mga9:1.1.2 image.

View File

@@ -1,25 +1,31 @@
# Rx3 PostgreSQL Mageia-9 Docker Image # Rx3-Docker/PostgreSQL Docker Image
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
name: ${IMG_NAME} name: ${IMG_NAME}
services: services:
database: database:
container_name: ${IMG_NAME} container_name: ${IMG_NAME}
hostname: ${IMG_NAME}
image: ${IMG_URL}
image: ${IMG_URL}
build: build:
context: . context: .
args: args:
- IMG_NAME=${IMG_NAME} IMG_NAME: ${IMG_NAME}
- IMG_FULL_NAME=${IMG_FULL_NAME} IMG_NAME_FULL: ${IMG_NAME_FULL}
- IMG_VERSION=${IMG_VERSION} IMG_VERSION: ${IMG_VERSION}
- IMG_MAINTAINER=${IMG_MAINTAINER} IMG_MAINTAINER: ${IMG_MAINTAINER}
- IMG_URL_PREFIX=${IMG_URL_PREFIX} IMG_FROM_URL: ${IMG_FROM_URL}
POSTGRESQL_LIB: ${DATABASE_LIB_DIR}
POSTGRESQL_LOG: ${DATABASE_LOG_POSTGRES_DIR}
POSTGRESQL_PORT: ${DATABASE_PORT_MAIN_INT}
POSTSQL_LOG_DIR: ${DATABASE_LOG_POSTSQL_DIR}
restart: unless-stopped restart: unless-stopped
environment: environment:
POSTGRESQL_UID: ${POSTGRESQL_UID} POSTGRESQL_UID: ${POSTGRESQL_UID}
@@ -29,11 +35,19 @@ services:
POSTGRESQL_USER: ${POSTGRESQL_USER} POSTGRESQL_USER: ${POSTGRESQL_USER}
POSTGRESQL_PASSWORD: ${POSTGRESQL_PASSWORD} POSTGRESQL_PASSWORD: ${POSTGRESQL_PASSWORD}
volumes: healthcheck:
- ./pgsql/data:/var/lib/pgsql/data test: ["CMD-SHELL", "sh -c 'pg_isready -U ${POSTGRESQL_USER} -d ${POSTGRESQL_DATABASE}'"]
interval: 10s
timeout: 3s
retries: 3
network_mode: bridge volumes:
- ./var/lib/pgsql/data:${DATABASE_DATA_DIR}
- ./var/log/init:${DATABASE_LOG_INIT_DIR}
- ./var/log/supervisor:${DATABASE_LOG_SV_DIR}
- ./var/log/postgres:${DATABASE_LOG_POSTGRES_DIR}
ports: ports:
- "127.0.0.1:9013:9001" - "127.0.0.1:${DATABASE_PORT_SV_EXT}:${DATABASE_PORT_SV_INT}"
- "127.0.0.1:8032:5432" - "127.0.0.1:${DATABASE_PORT_MAIN_EXT}:${DATABASE_PORT_MAIN_INT}"

View File

@@ -1,13 +1,14 @@
# Rx3 PostgreSQL Mageia-9 Docker Image # Rx3-Docker/PostgreSQL Docker Image
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# Global Settings # Global Settings
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
IMG_ORG="rx3" ORG_NAME="rx3-docker"
IMG_REGISTRY="docker.xor.rx3:5000" ORG_REGISTRY="docker.xor.rx3:5000"
IMG_URL_PREFIX="${IMG_REGISTRY}/${IMG_ORG}"
ORG_URL_PREFIX="${ORG_REGISTRY}/${ORG_NAME}"
@@ -15,18 +16,38 @@ IMG_URL_PREFIX="${IMG_REGISTRY}/${IMG_ORG}"
# Image Settings # Image Settings
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
IMG_NAME="postgresql-mga9" IMG_NAME="postgresql"
IMG_FULL_NAME="Rx3 MariaDB Mageia-9 Docker Image" IMG_NAME_FULL="Rx3-Docker/PostgreSQL Docker Image"
IMG_VERSION="1.0.0" IMG_VERSION="1.1.1-mga9"
IMG_URL="${IMG_URL_PREFIX}/${IMG_NAME}:${IMG_VERSION}"
IMG_MAINTAINER='"Arnaud G. GIBERT" <arnaud@rx3.net>' IMG_MAINTAINER='"Arnaud G. GIBERT" <arnaud@rx3.net>'
IMG_URL_PREFIX="${ORG_URL_PREFIX}"
IMG_URL="${IMG_URL_PREFIX}/${IMG_NAME}:${IMG_VERSION}"
IMG_FROM_URL="${ORG_URL_PREFIX}/server:1.2.1-mga9"
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# User Settings # User Settings
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
ENV_PORT_OFFSET=0
SV_PORT_OFFSET=1000
DATABASE_PORT_MAIN_EXT=$(( 8032 + ${ENV_PORT_OFFSET}))
DATABASE_PORT_MAIN_INT=5432
DATABASE_PORT_SV_EXT=$(( ${DATABASE_PORT_MAIN_EXT} + ${SV_PORT_OFFSET}))
DATABASE_PORT_SV_INT=9001
DATABASE_LIB_DIR="/var/lib/pgsql"
DATABASE_DATA_DIR="${DATABASE_LIB_DIR}/data"
DATABASE_LOG_INIT_DIR="/var/log/init"
DATABASE_LOG_SV_DIR="/var/log/supervisor"
DATABASE_LOG_POSTGRES_DIR="/var/log/postgres"
DATABASE_LOG_POSTSQL_DIR="${DATABASE_LOG_SV_DIR}"
POSTGRESQL_UID=971 POSTGRESQL_UID=971
POSTGRESQL_GID=971 POSTGRESQL_GID=971
POSTGRESQL_POSTGRES_PASSWORD="postgresadmin" POSTGRESQL_POSTGRES_PASSWORD="postgresadmin"

4
var/lib/pgsql/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore

4
var/log/init/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore

4
var/log/postgres/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore

4
var/log/supervisor/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore