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

आधिकारिक PostgreSQL Docker छवि की कॉन्फ़िगरेशन फ़ाइल को कैसे अनुकूलित करें?

डॉकर कंपोज़ के साथ

Docker Compose के साथ काम करते समय, आप command: postgres -c option=value का उपयोग कर सकते हैं आपके docker-compose.yml . में Postgres को कॉन्फ़िगर करने के लिए।

उदाहरण के लिए, यह पोस्टग्रेज़ को एक फ़ाइल में लॉग इन करता है:

command: postgres -c logging_collector=on -c log_destination=stderr -c log_directory=/logs

Vojtech Vitek के उत्तर को अपनाते हुए, आप उपयोग कर सकते हैं

command: postgres -c config_file=/etc/postgresql.conf

कॉन्फ़िग फ़ाइल को बदलने के लिए Postgres उपयोग करेगा। आप अपनी कस्टम कॉन्फ़िगरेशन फ़ाइल को वॉल्यूम के साथ माउंट करेंगे:

volumes:
   - ./customPostgresql.conf:/etc/postgresql.conf

यह रहा docker-compose.yml मेरे आवेदन का, यह दिखा रहा है कि Postgres को कैसे कॉन्फ़िगर किया जाए:

# Start the app using docker-compose pull && docker-compose up to make sure you have the latest image
version: '2.1'
services:
  myApp:
    image: registry.gitlab.com/bullbytes/myApp:latest
    networks:
      - myApp-network
  db:
     image: postgres:9.6.1
     # Make Postgres log to a file.
     # More on logging with Postgres: https://www.postgresql.org/docs/current/static/runtime-config-logging.html
     command: postgres -c logging_collector=on -c log_destination=stderr -c log_directory=/logs
     environment:
       # Provide the password via an environment variable. If the variable is unset or empty, use a default password
       # Explanation of this shell feature: https://unix.stackexchange.com/questions/122845/using-a-b-for-variable-assignment-in-scripts/122848#122848
       - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-4WXUms893U6j4GE&Hvk3S*hqcqebFgo!vZi}
     # If on a non-Linux OS, make sure you share the drive used here. Go to Docker's settings -> Shared Drives
     volumes:
       # Persist the data between container invocations
       - postgresVolume:/var/lib/postgresql/data
       - ./logs:/logs
     networks:
       myApp-network:
         # Our application can communicate with the database using this hostname
         aliases:
           - postgresForMyApp
networks:
  myApp-network:
    driver: bridge
# Creates a named volume to persist our data. When on a non-Linux OS, the volume's data will be in the Docker VM
# (e.g., MobyLinuxVM) in /var/lib/docker/volumes/
volumes:
  postgresVolume:

लॉग निर्देशिका में लिखने की अनुमति

ध्यान दें कि जब Linux पर, होस्ट पर लॉग निर्देशिका में सही अनुमतियाँ होनी चाहिए। अन्यथा आपको थोड़ी भ्रामक त्रुटि मिलेगी

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

FATAL:लॉग फ़ाइल नहीं खोल सका"/logs/postgresql-2017-02-04_115222.log":अनुमति अस्वीकृत

मैं भ्रामक कहता हूं, क्योंकि त्रुटि संदेश से पता चलता है कि निर्देशिका कंटेनर में गलत अनुमति है, जब वास्तव में निर्देशिका होस्ट पर लिखने की अनुमति नहीं देता।

इसे ठीक करने के लिए, मैंने

. का उपयोग करके होस्ट पर सही अनुमतियां सेट की हैं
chgroup ./logs docker && chmod 770 ./logs


  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. पोस्टग्रेएसक्यूएल बी-ट्री इंडेक्स पर नोट्स

  3. सरणी के लिए UNIQUE CONSTRAINT पोस्टग्रेज करता है

  4. PostgreSQL में IN बनाम कोई भी ऑपरेटर

  5. सीरियल प्राथमिक कुंजी कॉलम का उपयोग करके सुरक्षित रूप से तालिकाओं का नाम बदलें