PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Docker छवि बनाते समय Postgresdump को कैसे पुनर्स्थापित करें?

यह निम्न Dockerfile के साथ example.pg डंप फ़ाइल प्रदान करके किया जा सकता है:

FROM postgres:9.6.16-alpine

LABEL maintainer="[email protected]"
LABEL org="Cobrainer GmbH"

ARG PG_POSTGRES_PWD=postgres
ARG DBUSER=someuser
ARG [email protected]
ARG DBNAME=sampledb
ARG DB_DUMP_FILE=example.pg

ENV POSTGRES_DB launchpad
ENV POSTGRES_USER postgres
ENV POSTGRES_PASSWORD ${PG_POSTGRES_PWD}
ENV PGDATA /pgdata

COPY wait-for-pg-isready.sh /tmp/wait-for-pg-isready.sh
COPY ${DB_DUMP_FILE} /tmp/pgdump.pg

RUN set -e && \
    nohup bash -c "docker-entrypoint.sh postgres &" && \
    /tmp/wait-for-pg-isready.sh && \
    psql -U postgres -c "CREATE USER ${DBUSER} WITH SUPERUSER CREATEDB CREATEROLE ENCRYPTED PASSWORD '${DBUSER_PWD}';" && \
    psql -U ${DBUSER} -d ${POSTGRES_DB} -c "CREATE DATABASE ${DBNAME} TEMPLATE template0;" && \
    pg_restore -v --no-owner --role=${DBUSER} --exit-on-error -U ${DBUSER} -d ${DBNAME} /tmp/pgdump.pg && \
    psql -U postgres -c "ALTER USER ${DBUSER} WITH NOSUPERUSER;" && \
    rm -rf /tmp/pgdump.pg

HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
  CMD pg_isready -U postgres -d launchpad

जहां wait-for-pg-isready.sh है:

#!/bin/bash
set -e

get_non_lo_ip() {
  local _ip _non_lo_ip _line _nl=$'\n'
  while IFS=$': \t' read -a _line ;do
    [ -z "${_line%inet}" ] &&
        _ip=${_line[${#_line[1]}>4?1:2]} &&
        [ "${_ip#127.0.0.1}" ] && _non_lo_ip=$_ip
    done< <(LANG=C /sbin/ifconfig)
  printf ${1+-v} $1 "%s${_nl:0:$[${#1}>0?0:1]}" $_non_lo_ip
}

get_non_lo_ip NON_LO_IP
until pg_isready -h $NON_LO_IP -U "postgres" -d "launchpad"; do
  >&2 echo "Postgres is not ready - sleeping..."
  sleep 4
done

>&2 echo "Postgres is up - you can execute commands now"

दो "अनिश्चित चरणों" के लिए:

nohup bash -c "docker-entrypoint.sh postgres &" इसकी देखभाल कर सकते हैं

यह वास्तव में आवश्यक नहीं है

अधिक विस्तृत README के ​​साथ उपरोक्त स्क्रिप्ट https://github पर उपलब्ध हैं। .com/cobrainer/pg-docker-with-restored-db



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक सम्मिलित तालिका कॉलम का विशिष्ट योग प्राप्त करें

  2. इंडेक्स हिट करने के लिए date_part क्वेरी कैसे प्राप्त करें?

  3. अपाचे स्पार्क:JDBC कनेक्शन काम नहीं कर रहा

  4. केवल अंतर्निहित कार्यों के साथ urlencode

  5. जावा के साथ पोस्टग्रेस्क्ल लेनदेन हैंडलिंग