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

docker-compose postgres docker-entrypoint-initdb.d . में स्क्रिप्ट चलाने के बाद पुनरारंभ होता है

सीधे शब्दों में कहें, यह उद्देश्य पर होता है; लेखक इसे आरंभीकरण के हिस्से के रूप में करता है।

ऐसा लगता है कि कुछ जवाब इमेज के एंट्री पॉइंट शेल स्क्रिप्ट में मिल सकते हैं:

_main() {
    # if first arg looks like a flag, assume we want to run postgres server
    if [ "${1:0:1}" = '-' ]; then
        set -- postgres "[email protected]"
    fi

    if [ "$1" = 'postgres' ] && ! _pg_want_help "[email protected]"; then
        docker_setup_env
        # setup data directories and permissions (when run as root)
        docker_create_db_directories
        if [ "$(id -u)" = '0' ]; then
            # then restart script as postgres user
            exec gosu postgres "$BASH_SOURCE" "[email protected]"
        fi

        # only run initialization on an empty data directory
        if [ -z "$DATABASE_ALREADY_EXISTS" ]; then
            docker_verify_minimum_env

            # check dir permissions to reduce likelihood of half-initialized database
            ls /docker-entrypoint-initdb.d/ > /dev/null

            docker_init_database_dir
            pg_setup_hba_conf

            # PGPASSWORD is required for psql when authentication is required for 'local' connections via pg_hba.conf and is otherwise harmless
            # e.g. when '--auth=md5' or '--auth-local=md5' is used in POSTGRES_INITDB_ARGS
            export PGPASSWORD="${PGPASSWORD:-$POSTGRES_PASSWORD}"
            docker_temp_server_start "[email protected]"

            docker_setup_db
            docker_process_init_files /docker-entrypoint-initdb.d/*

            docker_temp_server_stop
            unset PGPASSWORD

            echo
            echo 'PostgreSQL init process complete; ready for start up.'
            echo
        else
            echo
            echo 'PostgreSQL Database directory appears to contain a database; Skipping initialization'
            echo
        fi
    fi

    exec "[email protected]"
}

"क्यों?" के लिए के रूप में मुझे लगता है कि यह एक कम-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में चलने की इच्छा के कारण है।

आप कंपोज़ फ़ाइल में वॉल्यूम निर्दिष्ट करके समस्या को "समाधान" कर सकते हैं जैसे:

    volumes:
       - ./data/pgsql:/var/lib/postgresql/data

फिर, यह DATABASE_ALREADY_EXISTS सुनिश्चित करने के लिए रूटीन को छोड़ देगा ।

या, अगर यह मददगार नहीं है--आप एंट्रीपॉइंट स्क्रिप्ट में थोड़ा और खुदाई कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में किसी संख्या को प्रतिशत के रूप में प्रारूपित करने के 3 तरीके

  2. बल्क पोस्टग्रेज इंसर्ट जहां टाइमस्टैम्प में सीक्वलाइज़ के माध्यम से सेट की गई शून्य बाधा है

  3. पोस्टग्रेज - पीजी रत्न का अंतिम संस्करण 0.14.0 त्रुटि देता है

  4. Postgresql 9.1 से 9.3 में अपग्रेड करते समय लॉग फ़ाइल pg_upgrad_internal.log पर नहीं लिख सकता

  5. जोड़ीदार सरणी योग कुल कार्य?