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

डॉकर पोस्टग्रेज के लिए स्क्रिप्ट में यूजर/डेटाबेस कैसे बनाएं

संपादित करें - 23 जुलाई 2015 से

आधिकारिक पोस्टग्रेज डॉकर छवि .sql चलाएगी /docker-entrypoint-initdb.d/ . में मिली स्क्रिप्ट फ़ोल्डर।

तो आपको केवल निम्नलिखित sql स्क्रिप्ट बनाने की आवश्यकता है:

init.sql

CREATE USER docker;
CREATE DATABASE docker;
GRANT ALL PRIVILEGES ON DATABASE docker TO docker;

और इसे अपने Dockerfile में जोड़ें:

डॉकरफ़ाइल

FROM library/postgres
COPY init.sql /docker-entrypoint-initdb.d/

लेकिन 8 जुलाई, 2015 से, यदि आपको केवल एक उपयोगकर्ता और डेटाबेस बनाने की आवश्यकता है , केवल POSTGRES_USER . का उपयोग करना आसान है , POSTGRES_PASSWORD और POSTGRES_DB पर्यावरण चर:

docker run -e POSTGRES_USER=docker -e POSTGRES_PASSWORD=docker -e POSTGRES_DB=docker library/postgres

या डॉकरफाइल के साथ:

FROM library/postgres
ENV POSTGRES_USER docker
ENV POSTGRES_PASSWORD docker
ENV POSTGRES_DB docker

23 जुलाई 2015 से पुराने चित्रों के लिए

पोस्टग्रेज़ डॉकर छवि के दस्तावेज़ीकरण से, ऐसा कहा जाता है कि

<ब्लॉकक्वॉट>

[...] यह उस निर्देशिका में मिली किसी भी *.sh स्क्रिप्ट को स्रोत करेगा [/docker-entrypoint-initdb.d ] सेवा शुरू करने से पहले आगे इनिशियलाइज़ेशन करने के लिए

यहां जो महत्वपूर्ण है वह है "सेवा शुरू करने से पहले" . इसका मतलब है कि आपकी स्क्रिप्ट make_db.sh पोस्टग्रेज सेवा शुरू होने से पहले निष्पादित किया जाएगा, इसलिए त्रुटि संदेश "डेटाबेस पोस्टग्रेज से कनेक्ट नहीं हो सका"

उसके बाद एक और उपयोगी जानकारी है:

<ब्लॉकक्वॉट>

यदि आपको अपने इनिशियलाइज़ेशन के हिस्से के रूप में SQL कमांड को निष्पादित करने की आवश्यकता है, तो Postgres सिंगल यूजर मोड के उपयोग की अत्यधिक अनुशंसा की जाती है।

सहमत हूं कि यह पहली नजर में थोड़ा रहस्यमय हो सकता है। यह क्या कहता है कि आपकी प्रारंभिक स्क्रिप्ट को अपने कार्यों को करने से पहले एकल मोड में पोस्टग्रेस सेवा शुरू करनी चाहिए। तो आप अपना make_db.ksh बदल सकते हैं स्क्रिप्ट इस प्रकार है और यह आपको आपकी इच्छित चीज़ों के करीब ले जाना चाहिए:

नोट , यह हाल ही में निम्नलिखित प्रतिबद्धताओं में बदल गया है। यह नवीनतम बदलाव के साथ काम करेगा:

export PGUSER=postgres
psql <<- EOSQL
    CREATE USER docker;
    CREATE DATABASE docker;
    GRANT ALL PRIVILEGES ON DATABASE docker TO docker;
EOSQL

पहले, --single . का उपयोग मोड की आवश्यकता थी:

gosu postgres postgres --single <<- EOSQL
    CREATE USER docker;
    CREATE DATABASE docker;
    GRANT ALL PRIVILEGES ON DATABASE docker TO docker;
EOSQL


  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 प्रतिकृति

  2. PostgreSQL क्वेरी में दिनांक स्तंभ अंकगणित

  3. Google Datastudio के साथ Heroku Postgresql

  4. टेम्पलेट डेटाबेस संग्रह कोडिंग कैसे बदलें

  5. PostgreSQL PL/pgSQL में लेनदेन शुरू/समाप्त नहीं कर सकता