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

डॉकर कंपोज़ में पोस्टग्रेज डीबी को इनिशियलाइज़ करें

मैं कस्टम Dockerfile . का उपयोग करके इसे काम करने में कामयाब रहा , ये रहा मेरा समाधान:

परियोजना संरचना

data/
  datasource.csv
db/
  scripts/
    1_init.sql
    2_copy.sql
  Dockerfile
docker-compose.yml

फ़ाइलें

  1. CSV फ़ाइल data . में स्थित है प्रोजेक्ट के अंदर फ़ोल्डर।

  2. प्रोजेक्ट फ़ोल्डर में निम्नलिखित है docker-compose.yml फ़ाइल:

    version: '3.3'
    
    services:
      db:
        build: ./db
        container_name: postgres
        ports:
          - "5431:6666"
        environment:
          - POSTGRES_USER=postgres
          - POSTGRES_PASSWORD=postgres
          - POSTGRES_DB=db_name
        volumes:
          - ./data:/data
    
  3. Dockerfile इसमें शामिल हैं:

    FROM postgres:alpine
    ADD scripts/1_init.sql /docker-entrypoint-initdb.d
    ADD scripts/2_copy.sql /docker-entrypoint-initdb.d
    RUN chmod a+r /docker-entrypoint-initdb.d/*
    EXPOSE 6666
    
  4. 1_init.sql शरीर:

    CREATE TABLE table_name
    (
       --statement body
    );
    
  5. और 2_copy.sql :

    COPY table_name FROM '/data/datasource.csv' DELIMITER ',' CSV HEADER;
    

स्पष्टीकरण

1_init.sql DB तालिका बनाता है, इसमें CSV फ़ाइल के समान कॉलम नाम होने चाहिए . 2_copy.sql सीएसवी से पोस्टग्रेज में डेटा कॉपी करने के लिए जिम्मेदार है।

Dockerfile पोस्टग्रेज छवि का उपयोग करता है और सभी *.sql . को कॉपी करता है /docker-entrypoint-initdb.d/ पर फ़ाइलें . बाद में, सभी फाइलों को अल्फ़ान्यूमेरिकल क्रम में निष्पादित किया जाता है, इसीलिए *.sql फाइलें अंकों से शुरू होती हैं। अंत में, पोर्ट 6666 उजागर है।

docker-compose.yml Dockerfile बनाता है db . से फ़ोल्डर और इसे 5431 . के माध्यम से एक्सेस करने योग्य बनाएं बंदरगाह। पर्यावरणीय गुणों के रूप में मूल पोस्टग्रेज गुणों का उपयोग किया जाता है। और अंत में data CSV फ़ाइल वाले फ़ोल्डर को कंटेनर में कॉपी किया जाता है।




  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. यह जांचने के 5 तरीके कि क्या PostgreSQL में कोई तालिका मौजूद है

  3. सरणी तत्वों को छाँटना

  4. PostgreSQL- एक दिनांक सीमा फ़िल्टर करें

  5. idx autoincrement के साथ postgresql sqlalchemy में डेटाफ्रेम डालें