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

डॉकर कंपोज़:पोस्टग्रेस्क्ल डीबी बनाएँ, उपयोगकर्ता पास और अनुमति दें

टिप्पणियों के आधार पर, मैं यहां उत्तर देने का प्रयास करूंगा।

मेरा मानना ​​​​है कि आपको 11-अल्पाइन छवि पोस्टग्रेज के साथ जाना चाहिए। और मैं यहाँ समझाने की कोशिश करूँगा कि क्यों।

आधिकारिक डॉकटर छवियां कई लाभों के साथ आती हैं जिन्हें आपको अपना स्वयं का प्रारंभ करने से पहले हमेशा विचार करना चाहिए।

  1. अपग्रेड पथ आसान है - जब छवि में लिपटे एप्लिकेशन का एक नया संशोधन जारी किया जाता है, तो आधिकारिक डॉकटर छवि ज्यादातर मामलों में इसके साथ अपडेट की जाएगी। और आमतौर पर परिवर्तन उन कॉन्फ़िगरेशन सम्मेलनों का सम्मान करते हैं जिन्हें छवि ने स्थापित किया है। जैसे पर्यावरण चर, स्टार्टअप विनिर्देश। ताकि उपयोगकर्ता आसानी से अपने स्टैक में टैग को बदल सकें और अपग्रेड कर सकें। निश्चित रूप से ब्रेकिंग परिवर्तन हो सकते हैं - इसे हमेशा जांचें।
  2. बड़ा उपयोगकर्ता आधार - जब पोस्टग्रेज जैसी छवियों को 10 मिलियन से अधिक बार (2019) डाउनलोड किया गया है, तो इसका मतलब यह नहीं है कि यह लोकप्रिय है, बल्कि स्वाभाविक रूप से एक गारंटी की तरह काम करता है कि छवि का पूरी तरह से परीक्षण किया गया है। किसी भी प्राथमिक बग को पहले ही समाप्त कर दिया गया है, और आपके पास छवि के साथ एक आसान समय होगा।
  3. आकार और प्रदर्शन के लिए अनुकूलित - आप सुनिश्चित हो सकते हैं कि छवि के आकार को कम करने और प्रदर्शन को अधिकतम करने के लिए बहुत सारे विवरणों पर ध्यान दिया गया है। कई परियोजनाएं अपने अनुप्रयोगों को कुछ अलग लिनक्स डिस्ट्रो पर प्रकाशित करती हैं। पोस्टग्रेज की तरह - वे debian . प्रकाशित करते हैं और एक alpine आधारित चित्र। alpine छवि छोटी है, जबकि debian थोड़ा बड़ा है, लेकिन अगर आपको अतिरिक्त पैकेज स्थापित करने की आवश्यकता है तो आपको विशाल डेबियन पैकेज रिपॉजिटरी तक पहुंच प्रदान करता है।
  4. आसान कॉन्फ़िगरेशन - आधिकारिक छवियों के अनुरक्षक आमतौर पर समझते हैं कि उनके उपयोगकर्ता आधार के मामलों का उपयोग बहुत अच्छी तरह से होता है। और वे डेवलपर्स और व्यवस्थापक के रूप में हमारे जीवन को आसान बनाने की कोशिश करते हैं (भगवान उन्हें आशीर्वाद दें)। आधिकारिक छवियों में आमतौर पर उनके डॉक हब लैंडिंग पृष्ठ पर कुछ बहुत अच्छे दस्तावेज़ होते हैं, या एक जीथब रेपो का लिंक होता है जहां README.md सामान्य उपयोग के मामलों को कवर करेगा। मुझे लगता है कि ये निर्देश ऊपर से नीचे तक पढ़ने लायक हैं।

मैं समझता हूं कि आप छवि को छोटा रखना चाहते हैं, लेकिन आप क्या जानते हैं - पोस्टग्रेज प्रोजेक्ट ने आपके उपयोग के मामले को कवर कर लिया है।

नवीनतम अल्पाइन पोस्टग्रेज़ छवि को टैग किया गया 11-alpine 28 एमबी . का संकुचित पदचिह्न है और 70MB . का असंपीड़ित . जबकि archlinux/base जिस छवि से आप प्रारंभ करना चाहते हैं उसका आधार पदचिह्न 153MB . है और 445MB . का विघटित आकार . और इससे पहले कि आप स्वयं पोस्टग्रेज़ का परिचय दें।

उसमें जोड़ें, कि डेटाबेस और उपयोगकर्ता जिसे आप स्टार्टअप पर बनाना चाहते हैं - आधिकारिक पोस्टग्रेज छवि के लिए अकेले पर्यावरण चर में नियंत्रित किया जा सकता है। इस तरह:

docker run -d --name some-postgres \
  -e POSTGRES_PASSWORD=mysecretpassword \
  -e POSTGRES_USER=simha \
  -e POSTGRES_DB=btgapp \
postgres:11-alpine

यदि वह आपके डेटाबेस के लिए आवश्यक इनिशियलाइज़ेशन को कवर नहीं करता है, तो आप .sql . को कॉपी कर सकते हैं स्क्रिप्ट (और .sh स्क्रिप्ट) छवि में एक विशेष स्थान पर - और उन्हें स्टार्टअप पर निष्पादित किया जाएगा। इसके लिए आप उनकी इमेज को इस तरह बढ़ा सकते हैं:

init-user-db.sh

#!/bin/bash
set -e

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
    CREATE USER simha;
    CREATE DATABASE btgapp;
    GRANT ALL PRIVILEGES ON DATABASE btgapp TO simha;
EOSQL

और फिर एक Dockerfile . के साथ इस तरह:

Dockerfile

FROM postgres:11-alpine
COPY ./init-user-db.sh /docker-entrypoint-initdb.d/init-user-db.sh

(यह डॉकर हब पर पोस्टग्रेज विवरण से लिया गया है )

समापन में - मैं अनुशंसा करता हूं कि आप डिस्ट्रो को प्राथमिकता न दें कि एक छवि उपयोगिता और रखरखाव पर आधारित है। डॉकर कंटेनर के अंदर डिस्ट्रो क्या है, इस बारे में बहुत अधिक परवाह किए बिना हमें कंटेनरों में एप्लिकेशन चलाने में सक्षम बनाता है। वैसे भी यह सब लिनक्स है। दिन के अंत में, मुझे उम्मीद है कि आप मेरे जैसे एक स्थिर पोस्टग्रेज डेटाबेस कंटेनर चाहते हैं। आधिकारिक पोस्टग्रेज छवि के साथ मुझे यही मिलता है।

मुझे आशा है कि मैंने इस पर आपके विकल्पों का मूल्यांकन करने में आपकी सहायता की है।




  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. DBeaver और PostgreSQL में सीरियल डेटा प्रकार की समस्याएं

  3. पोस्टग्रेज के साथ न्यूनतम या अधिकतम इनसेट/सीडीआर के लिए क्वेरी कैसे करें

  4. मैं PostgreSQL ट्रिगर फ़ंक्शन में तालिका का नाम कैसे प्राप्त कर सकता हूं?

  5. Django + PostgreSQL:एक डेटाबेस बनाना (क्या विशेषाधिकार देना है)