PostgreSQL के साथ CI / CD पाइपलाइन "डेटाबेस अनइंस्टाल्यूटेड है और सुपरसुअर पासवर्ड निर्दिष्ट नहीं है" त्रुटि


18

मैं CI / CD के लिए PosgreSQL के साथ Bitbucket पाइपलाइन का उपयोग कर रहा हूं। इस दस्तावेज के अनुसार PostgreSQL सेवा bitbucket-pipelines.ymlइस तरह से वर्णित की गई है :

definitions:
  services:
    postgres:
      image: postgres:9.6-alpine

यह अब तक ठीक काम किया। लेकिन मेरी सभी नवीनतम पाइपलाइन निम्नलिखित त्रुटि के साथ विफल रही:

   Error: Database is uninitialized and superuser password is not specified.
   You must specify POSTGRES_PASSWORD for the superuser. Use
   "-e POSTGRES_PASSWORD=password" to set it in "docker run".

   You may also use POSTGRES_HOST_AUTH_METHOD=trust to allow all connections
   without a password. This is *not* recommended. See PostgreSQL
   documentation about "trust":
   https://www.postgresql.org/docs/current/auth-trust.html

मेरे द्वारा यह कैसे किया जा सकता है? bitbucket-pipelines.ymlफ़ाइल में कोई बदलाव नहीं हुआ जो इस तरह की त्रुटि का कारण हो सकता है।

जवाबों:


17

ऐसा लगता है कि कारण docker की छवि का अद्यतन (github मुद्दा ) है। नवीनतम संस्करण कहीं से भी बिना पासवर्ड के DB से जुड़ने की अनुमति नहीं देते हैं। इसलिए आपको उपयोगकर्ता नाम / पासवर्ड निर्दिष्ट करने की आवश्यकता है:

definitions:
  services:
    postgres:
      image: postgres:9.6-alpine
      environment:
         POSTGRES_DB: pipelines
         POSTGRES_USER: test_user
         POSTGRES_PASSWORD: test_user_password

या यदि आप अभी भी पासवर्ड का उपयोग नहीं करना चाहते हैं, तो आप बस POSTGRES_HOST_AUTH_METHOD=trustपर्यावरण चर सेट कर सकते हैं :

definitions:
  services:
    postgres:
      image: postgres:9.6-alpine
      environment:
        POSTGRES_HOST_AUTH_METHOD: trust

4

यह एक हालिया बदलाव है, जैसा कि लगभग एक सप्ताह पहले हुआ था। एक तरह से यह से बचने के लिए नहीं करने के लिए नवीनतम अपने postgres संस्करण हार्डकोड करने है, जैसे के लिए बदल रहा postgres:9.5.18है याpostgres:9.5.20-alpine

दूसरा तरीका यह है कि एक नकली पासवर्ड पास करें:

services:
  db:
    image: postgres
    ports:
      - "8001:5432"
    environment:
      - POSTGRES_PASSWORD=fake_password

यहां देखें चर्चा: https://github.com/docker-library/postgres/issues/681


1

यदि आपको पहली बार डॉकटर के माध्यम से Django को PostgreSQL से जोड़ने के मुद्दे हैं, तो POSTGRES_HOST_AUTH_METHOD: trustअपनी docker-compose.ymlफ़ाइल में जोड़ें :

db: image: postgres:11 environment: POSTGRES_HOST_AUTH_METHOD: trust

यह मेरे लिए कनेक्शन समस्या को हल करता है।

कृपया यह भी जान लें कि "यह अनुशंसित नहीं है ।" ट्रस्ट "के बारे में PostgreSQL प्रलेखन देखें: https://www.postgresql.org/docs/current/auth-trust.html "


यदि यह अनुशंसित नहीं है, तो इसका सुझाव क्यों दें? सचेत करना कि यह अनुशंसित नहीं है, अच्छा है, लेकिन यह भी प्रदान करता है कि आप इसे क्यों सुझाते हैं या इसके चारों ओर एक काम प्रदान करते हैं। जरूर मदद करेंगे। बस एक राय है।
एरोडकोड -११२ बंदर

इसके आसपास एक अच्छा काम सुपरयुजर के लिए एक POSTGRES_PASSWORD निर्दिष्ट करना है। आप इसे "
docker
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.