ডকার পেগডমিন স্থানীয় সংযোগ পোস্ট করে


96

আমি এনজিনেক্স, পিএইচপি এবং পোস্টগ্র্রেস সহ একটি উবুন্টু চিত্র তৈরি করেছি।

আমি আমার বর্তমান চিত্রটিতে পোস্টগ্রিস ডাটাবেসটি pgadminআমার স্থানীয় মেশিনে অবস্থিত সংযোগ করতে চাই ।

আমি আমার স্থানীয় প্যাগাডমিনের সাথে সংযোগ স্থাপনের জন্য চিত্র আইপি ব্যবহার করার চেষ্টা করার জন্য ডকার ইন্সপেক্টরকে ব্যবহার করার চেষ্টা করেছি তবে খুব বেশি সাফল্য ছাড়াই। আমি সংযোগের কাজ করার জন্য স্থানীয় কিছু বন্দর কনফিগার করার চেষ্টা করেছি।


আপনি বলবেন না যে পোস্টগ্রিএসকিউএল বাহ্যিক সংযোগগুলি শুনছে (আপনার কনফিগার ফাইলগুলি পরীক্ষা করে দেখুন) বা যদি পোর্টটি স্থানীয় মেশিন থেকে খোলা প্রদর্শিত হয়।
রিচার্ড Huxton

4
এতটা কম তথ্য দিয়ে এই প্রশ্নের উত্তর দেওয়া সম্ভব বলে মনে হচ্ছে না
চতুর্থ

উত্তর:


91

এটি একটি বৈধ প্রশ্ন নয় কেন লোকেরা মনে করেন কেন "সেই প্রশ্নের উত্তর দেওয়া সম্ভব বলে মনে হচ্ছে না"।

সুতরাং, আপনি যা করার চেষ্টা করছেন তা আমি এখানে কীভাবে করব তা এখানে:

  1. ডকার হাব থেকে পোস্টগ্রিজ চিত্র টানুন

    docker pull postgres:latest

  2. নীচের কমান্ডটি ব্যবহার করে ধারকটি চালান

    docker run -p 5432:5432 postgres

  3. ডকারের পরিদর্শন কমান্ডটি ব্যবহার করে আইপি সন্ধান করুন

  4. PGADMIN এ সংযোগ রাখতে সেই আইপি, পোর্ট, ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহার করুন

  5. আপনি ডকার পোস্টগ্রিজ ধারক অ্যাক্সেস করতে পারেন কিনা তা নিশ্চিত করতে নীচের মতো একটি সাধারণ টেলনেটও করতে পারেন:

    telnet IP_ADDRESS 5432


16
আপনি যদি এটি দিয়ে বন্দরটি প্রকাশ করছেন -p 5432:5432তবে আপনার ধারক আইপিটি ব্যবহার করার দরকার নেই আপনি আপনার হোস্ট আইপি ব্যবহার করতে পারেন, 127.0.0.1বা কেবলlocalhost
ডেভোস

পোস্টের অভিপ্রায়টি বৈধ তবে এটি SE এর জন্য একটি উচ্চ মানের পোস্ট নয়। শুরু করার জন্য, কোনও আসল 'প্রশ্ন' উত্থাপিত হয় না। অতিরিক্তভাবে, তারা কীভাবে প্রক্রিয়াটি চেষ্টা করেছিল বা এটি করার সময় তারা প্রাপ্ত ত্রুটিগুলির কোনও ইঙ্গিত নেই। এটি বলেছিল, আমি মনে করি আপনি প্রতিক্রিয়া দেওয়ার একটি দুর্দান্ত কাজ করেছেন।
duct_tape_coder

4
এই উত্তরটি আমার পক্ষে কার্যকর, সুতরাং এটি একটি বৈধ প্রশ্ন।
টড

আমি আমার হোস্টে ধারকটি মানচিত্র করতে 5432: 5432 -p ব্যবহার করেছি তবে এখনও সংযোগের ত্রুটি পেয়েছি। আমি ডকার ইন্সপেক্টের কাছ থেকে পেয়েছি আইপিএড্রেস ব্যবহার করার চেষ্টা করেছি এবং এটি কার্যকর হয়।
জিনাদ

49

উইন্ডোজ ১.১২..6 (9655) এর জন্য উইন্ডোজ 10 রানিং ডকারে যা আমি সাফল্য অর্জন করেছি, পদক্ষেপটি নীচের মতো:

  1. সর্বশেষতম পোস্টগ্রাগুলি টানুন

    docker pull postgres:latest

  2. পোস্টগ্রিজ পাত্রে চালান:

    docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name db-my -p 5432:5432 --restart=always postgres

  3. তারপরে পগাডমিন ওয়েবসাইট থেকে pgAdmin4 এর সর্বশেষতম সংস্করণ ইনস্টল করুন

  4. পিগএডমিন 4 চালান নতুন সার্ভার তৈরি করুন, এবং নিম্নলিখিত হোস্ট হিসাবে ইনপুট: 127.0.0.1 পোর্ট: 5432 ব্যবহারকারীর নাম: ব্যবহারকারীর পাসওয়ার্ড: পাসওয়ার্ড 123

  5. তারপরে সবকিছু ঠিক আছে, ডকার পোস্টগ্র্রেসের উদাহরণ সাফল্যের সাথে সংযুক্ত করুন।

41

অন্যথা, আপনি এক Postgres এবং Pgadmin একত্রিত পারে docker-composeফাইল, এবং ব্যবহারকারী হিসাবে লগ-ইন pgadmin4@pgadmin.org, pwd: admin। পোগগ্রিস সার্ভার যুক্ত করতে হোস্টনাম postgres, পোর্ট ব্যবহার করুন 5432

version: '3'
services:
  postgres:
    image: postgres
    hostname: postgres
    ports:
      - "6543:5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: TEST_SM
    volumes:
      - postgres-data:/var/lib/postgresql/data
    restart: unless-stopped

  pgadmin:
    image: dpage/pgadmin4
    depends_on:
      - postgres
    ports:
      - "5555:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
      PGADMIN_DEFAULT_PASSWORD: admin
    restart: unless-stopped

volumes:
  postgres-data:

4
আমি পেয়েছি 'ঠিকানাতে হোস্টের নাম "পোস্টগ্রিজ" অনুবাদ করতে পারিনি: নোডনাম বা সার্ভারনেম সরবরাহ করা নেই, না জানা।
এনরিক অর্টিজ ক্যাসিলাস

4
হোস্টের নাম "পোস্টগ্র্রেস" ঠিকানাটিতে অনুবাদ করতে পারেন: নামটি সমাধান হয় না
প্রক্সি

4
যদি আপনি docker network ls, আপনি পোস্টগ্রিস-টু-প্যাগাডমিন নেটওয়ার্কের জন্য একটি সেতু দেখতে পাবেন (আমার পোস্টগ্রিস_পোস্টগ্রেস)। তারপরে, আপনি docker network inspect postgres_postgresদুটি আইপি / হোস্টনাম সহ দুটি পাত্রে দেখতে পারেন এবং দেখতে পারেন । সফলভাবে পিজিএডমিন থেকে সংযোগ করার জন্য পোস্টগ্রিসের একটি (আমার পোস্টগ্রিজ_ডিবি_1) থেকে নিন।
নীল

25

এটাই আমি করেছি

পোস্টগ্রিসের জন্য

docker run -p 5432:5432  --name container-postgresdb -e POSTGRES_PASSWORD=admin -d postgres

pgadmin জন্য

docker run -p 5050:80  -e "PGADMIN_DEFAULT_EMAIL=name@example.com" -e "PGADMIN_DEFAULT_PASSWORD=admin"  -d dpage/pgadmin4

Pgadmin জন্য সংযোগ স্ট্রিং

host: host.docker.internal
database: postgres
user: postgres
password: admin

এটা ঠিক কাজ করে !!!!!


4
Unable to connect to server: could not translate host name "host.docker.internal" to address: Try again
duct_tape_coder

4
আমি এই পদ্ধতির সাহায্যে ডকারে পোস্টগ্রিজ এবং পিজএডমিন উভয়ই তৈরি করতে পারি। কি একটি ইনপুট মান হিসাবে আমার জন্য কাজ @SolidSnake থেকে উত্তর ছিল - stackoverflow.com/a/58224344/4288961 > Docker পরিদর্শন CONTAINER_ID | গ্রেপ আইপিএড্রেস। এবং হোস্ট হিসাবে এই ফলাফলের আইপি ঠিকানাটি ব্যবহার করেছেন
প্রসড্রাম

অসাধারণ!. খুব উপকারী. আমার কেবলমাত্র 'হোস্ট.ডোকার.ইনটার্নাল' মানটি প্রয়োজন
হার্নান অ্যাকোস্টা

19

আমার ক্ষেত্রে আমি কমান্ডের মাধ্যমে আমার পোস্টগ্রি ইমেজ পরিদর্শন করতে সমস্যাটি সমাধান করতে পারি

docker inspect CONTAINER_ID  | grep IPAddress.

সুতরাং, আমি আমার পেগডমিন 4 সংযোগটি কনফিগার করতে ডকার আইপি ঠিকানাটি ব্যবহার করেছি এবং সবকিছু ঠিক আছে। @ আফশিন গাজীকে ধন্যবাদ


এটি আমার পক্ষে কাজ করে।
কল্পনা তওদে

17

যদি পিজএডমিনটি একই উবুন্টু হোস্ট / অতিথি চালানোর উদ্দেশ্যে হয়, তবে আপনাকে পোস্টগ্র্যাসের ধারকটি লিঙ্ক করতে হবে, যাতে এটি নাম দ্বারা সমাধান করা যেতে পারে।

1. একটি পোস্টগ্রিজ ধারক চালান:

docker run --name some-postgres -e POSTGRES_PASSWORD=postgres -d postgres

2. পিজিএডমিন ধারক চালান:

docker run -p 80:80 --link some-postgres -e "PGADMIN_DEFAULT_EMAIL=email@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=postgres" -d dpage/pgadmin4

৩.এখন phAdmin ওয়েব অ্যাপে নতুন সার্ভার যুক্ত করার সময় some-postgresসার্ভারের নাম হিসাবে ব্যবহার করুন

--link some-postgresআমরা যখন পিজএডমিন আনছিলাম তখন নোট করুন । এই কমান্ডটি পোস্টগ্রিজ পাত্রে pgAdmin ধারককে দৃশ্যমান করে তোলে।


4
আমি সার্ভারের সাথে পিএসকিউর সাথে সংযোগ করতে পারি এবং আমি প্যাগাডমিন ইন্টারফেসে লগইন করতে পারি। কিন্তু প্যাগাডমিন ইন্টারফেস থেকে পোস্টগ্রিস সার্ভারের সাথে সংযোগ করার সময় আমি কোন নেটওয়ার্ক / পোর্ট ব্যবহার করব?
টম

4
ডকার ডকস ( ডকস.ডকার / নেটওয়ার্ক / লিঙ্কস ) থেকে লক্ষ্য করার মতো বিষয় আমার প্যাগডমিন ধারককে আমার পোস্টগ্রিজ কনটেইনারের সাথে কথা বলার জন্যও আমার Warning: The --link flag is a legacy feature of Docker. It may eventually be removed. Unless you absolutely need to continue using it, we recommend that you use user-defined networks to facilitate communication between two containers instead of using --link.ভাগ্য হয়নি --link। আমি তবে প্যাগাডমিনের স্থানীয় ইনস্টল থেকে পোস্টগ্রিজ অ্যাক্সেস করতে পারি।
duct_tape_coder

11

ডাটাবেস এবং পিজএডমিন পেতে আমি এটি ডকার ইয়ামল ফাইলে অন্তর্ভুক্ত করেছি:

database:
    image: postgres:10.4-alpine
    container_name: kafka-nodejs-example-database
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    expose:
      - "5432"
    ports:
      - 8000:5432
    volumes:
      - ./services/database/schema.sql:/docker-entrypoint-initdb.d/1-schema.sql
      - ./services/database/seed.sql:/docker-entrypoint-initdb.d/2-seed.sql
  pgadmin:
    image: dpage/pgadmin4
    ports:
      - 5454:5454/tcp
    environment:
      - PGADMIN_DEFAULT_EMAIL=admin@mydomain.com
      - PGADMIN_DEFAULT_PASSWORD=postgres
      - PGADMIN_LISTEN_PORT=5454

পোস্টগ্রিজের ব্যবহারকারীর নাম আলফোন এবং পাসওয়ার্ডটি হল xxxxxxxxxxxxx।

একটি না docker psধারক আইডি পান এবং তারপরdocker inspect <dockerContainerId> | grep IPAddress

যেমন: docker inspect 2f50fabe8a87 | grep IPAddress

পিপিএডমিনে আইপি ঠিকানা এবং ডকারে ব্যবহৃত ডাটাবেস শংসাপত্রগুলি প্রবেশ করান:

pgAdmin


4
এই সাহায্য করেছে। উপরের মত ডক পিজিএডমিন পোর্টালে সার্ভার কনফিগারেশনে যুক্ত করার জন্য ডকার পোস্টগ্রিসের সাথে যুক্ত কন্টেইনারের মধ্যে থেকেই আমাকে সঠিক আইপি ঠিকানাটি গ্রেপ করতে হয়েছিল। পুটিংয়ের localhostকাজ হয়নি।
অ্যান্ড্রু লোববান

5

আমার ক্ষেত্রে আমার পোস্টগ্র্রেএসকিউএল কনটেইনার ছিল, সুতরাং আমি আমার ধারকটি পরিবর্তন করিনি বা ডকার-রচনা রচনাটি তৈরি করিনি, পোস্টগ্র্রেএসকিউএল ইনস্টল করার জন্য কয়েক মাস পরে আমার প্যাগডেমিং দরকার ছিল, সুতরাং এটি আমার পদ্ধতির:

  1. docker inspect my_container_id_postgreSQL
  2. পোস্টগ্র্রেএসকিউএলকে দেওয়া নেটওয়ার্কটি ছিল:

    "নেটওয়ার্কস": {"ডকার_ডিফল্ট": {"আইপিএড্রেস": "172.18.0.2", ...}

  3. --networkকমান্ড দিয়ে আমার PGADMIN চালান ।

    ডকার রান -p 85:80 - নেট ওয়ার্ক ডকার_ডিফোল্ট -e 'PGADMIN_DEFAULT_EMAIL=user@domain.com' -e 'PGADMIN_DEFAULT_PASSWORD = সুপারসেক্রেট' -ড d পৃষ্ঠা / pgadmin4

  4. পিপিএডমিনে আইপি ঠিকানা এবং ডকারে ব্যবহৃত ডাটাবেস শংসাপত্রগুলি প্রবেশ করান।

আমি আশা করি এটি কারও পক্ষে কার্যকর হতে পারে। শ্রদ্ধা।


5

আপনার ধারকটির আইপি ক্রম বা সন্ধান করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

রেফারেন্স: হোস্টের কাছ থেকে ডকার কনটেইনার আইপি ঠিকানা কীভাবে পাবেন


4

আপনার পাত্রে পোস্টগ্রিস পোর্টটি আপনাকে স্থানীয় সিস্টেমে প্রকাশ করতে হবে। আপনি আপনার ধারকটি এভাবে চালিয়ে যাচ্ছেন:

docker run -p 5432:5432 <name/id of container>

আপনার জিইউআই ক্লায়েন্টের সাথে সংযোগ করার সময় বা সিআইএলআইপি ঠিকানাটি লোকালহোস্ট নয়, আপনার আইপি-ঠিকানা লোকালহোস্ট আইপি-ঠিকানা হলেও নিশ্চিত করুন।

docker ps আপনার পোস্টগ্রিজ ধারক চালু আছে এমন আইপি ঠিকানা আপনাকে দেবে।


4

আপনি যদি যাচাই করে থাকেন যে পোস্টগ্রিসকিউএল চলছে এবং আপনি সেখানে পিজএডমিনের স্থানীয় অনুলিপিটির সাথে সংযোগ করতে পারেন ...

উত্তরটি সহজ: ডকারের অভ্যন্তরে থাকা পিজিএডমিনের জন্য ইসটিড host.docker.internalঅফ localhostইউজড

<কোড> হোস্ট.ডোকার.ইনটার্নাল ব্যবহার করুন </ কোড> লোকালহোস্ট </ কোড>


2

এটি করার জন্য আপনি একটি ডকার ব্রিজ নেটওয়ার্ক তৈরি করতে পারেন।

$ docker network create pgnet
a0ae44aaf6f806fc37302e4c603b4828c4edb8d487fd9cd90e2fb19ae1d5c65f

$ docker run --detach \
    --name pg \
    --network pgnet \
    --publish 5432:5432 \
    --restart always \
    --env POSTGRES_PASSWORD=pg123 \
    --volume ${PWD}/data:/var/lib/postgresql/data \
    postgres:12.1
b60611e43727dabe483c1f08fdf74961b886ce05b432a10a0625bd1b6db87899

$ docker run --detach \
    --name pgadm \
    --network pgnet \
    --publish 8000:80 \
    --volume ${PWD}/pgadmin:/var/lib/pgadmin \
    --env PGADMIN_DEFAULT_EMAIL=user@domain.com \
    --env PGADMIN_DEFAULT_PASSWORD=pgadm123 \
    dpage/pgadmin4:4.20
27f9ce1c1c4c383ee1507f4e2d88f6ef33d4fcf5b209a8a03b87519f90d56312

খুলুন http: // লোকালহোস্ট: 8000 /

  1. নতুন সার্ভার যুক্ত করুন ক্লিক করুন
  2. সার্ভার - তৈরি করুন
    1. নাম: ডিবি
    2. হোস্ট নেম / ঠিকানা: pg
    3. ব্যবহারকারীর নাম: পোস্টগ্রিস
    4. পাসওয়ার্ড: pg123
  3. সংরক্ষণ

উপরে ব্যবহৃত হোস্ট-নেম / ঠিকানাটি পোস্টগ্র্রেস ধারকটির দেওয়া নাম --name pg


হোস্টনেম হিসাবে ধারকটির নামটি ব্যবহার করে এটি একটি অনন্য পদ্ধতি। এনগিনেক্স বা কিছু সেট আপ করার ক্ষেত্রে একই পন্থা। বোধ হয়।
শান ম্যাকার্থি

2

দু'দিন এই সমস্যার মুখোমুখি হওয়ার পরেও আমি এই সমস্যাটি সমাধান করতে সক্ষম হয়েছি।

এই সমস্যার সমাধানটি ইতিমধ্যে লোকেরা যেমন পরিদর্শন করে তার জবাব দেয়

docker inspect CONTAINER_ID

তবে এই কমান্ডটি চালনার সময় আমি প্রচুর লগ হোস্ট কনফিগার কনফিগারেশন নেটওয়ার্ক সেটিংস ইত্যাদির মতো পেয়েছিলাম তাই আমি বিভ্রান্ত হয়ে পড়লাম যে আইপিএড্রেসটি পিজএডমিন সংযোগে যুক্ত করতে হবে কারণ আমি 0.0.0.0 চেষ্টা করেছি এবং কনফিগার, হোস্ট, নেটওয়ার্কসেটিং -2 বিভিন্ন আইপিএড্রেস চেষ্টা করেছি লগ কিন্তু শেষ পর্যন্ত এটি অনেক চেষ্টা করার পরে কাজ করে।

এটি কাজ করে যা আইপি সঙ্গে, আমরা নেটওয়ার্ক IP ঠিকানা যোগ আছে (যা আমরা সংযোগ করার জন্য তৈরি করা postgres এবং pgAdmin ।)

আমার দৌড়ানোর সময় আমার মতো: -

ডকার পোস্টগ্রিস_সামগ্রী পরিদর্শন করে

 "NetworkSettings": {
        "Bridge": "",
        "SandboxID": "sdffsffsfsfsfsf123232e2r3pru3ouoyoyuosyvo8769696796",
        "HairpinMode": false,
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "Ports": {
            "5432/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "5432"
                }
            ]
        },
        "SandboxKey": "/var/run/docker/231231Ad132",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null,
        "EndpointID": "",
        "Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "",
        "IPPrefixLen": 0,
        "IPv6Gateway": "",
        "MacAddress": "",
        "Networks": {
            "postgres": {
                "IPAMConfig": null,
                "Links": null,
                "Aliases": [
                    "postgres",
                    "0e2j3bn2m42"
                ],
                "NetworkID": "35rhlhl3l53l5hlh3523233k3k4k22l3hk2k4",
                "EndpointID":"b3424n43k52o2i4n235k1k4l2l4hj234f14n2",
                "Gateway": "192.168.16.1",
                "IPAddress": "192.168.16.2",
                "IPPrefixLen": 20,
                "IPv6Gateway": "",

সুতরাং আমাদের নেটওয়ার্কসেটিং -> নেটওয়ার্ক -> পোস্টগ্র্রেস (খনি তৈরি নেটওয়ার্ক) -> আইপিএড্রেস অর্থাৎ "আইপিএড্রেস": "192.168.16.2" যুক্ত করতে হবে।

এই আইপি যুক্ত করার পরে এটি কাজ করবে।

আমি আশা করি এটি সাহায্য করবে


1

আপনার ধারকটির সঠিক আইপি খুঁজে পেতে, নিম্নলিখিত আদেশগুলি কার্যকর করুন:

ধারক আইডি চেক করুন:

docker ps

আপনার ধারকটির সঠিক আইপি পরীক্ষা করতে:

docker inspect <ID_CONTAINER> | grep "IPAddress"

ডকারের সাথে পোস্টগ্রেএসকিউএল এবং পিজএডমিন উভয়ের কনফিগারেশনটি সহজ, যদি সঠিক না হয় তবে আমি আপনার সমস্যাটি আরও গভীর হলে, স্ক্র্যাচ থেকে কনফিগারেশনটি পুনরায় করার পরামর্শ দিই।

এই সমস্যাটি সমাধান করার জন্য আমি এখানে একটি স্ক্রিপ্ট তৈরি করেছি। স্ক্রিপ্ট-শ / ইনস্টল-ডকার-পোস্টগ্রিস-এবং-পেগডমিন


1

ম্যাকোস আইপিগুলির জন্য postgresএবং সরবরাহকারীগুলির pgadmin4থেকে পৃথক docker inspect। প্রকার

docker-machine ls

বাম দিকে সার্ভারের নামটি একবার দেখুন। এটি defaultডিফল্টরূপে।

docker-machine ip defaultআইপি হবে আপনার জন্য ব্যবহার করতে হবে উভয় , pgadmin4ব্রাউজারে এবং জন্য postgrespgadmin4সেটিংস।


0

আমি যে সমাধানটি আমার জন্য চেষ্টা করেছি এবং কাজ করেছি তা হ'ল একটি ডকার কমপোজ ফাইল তৈরি করা যেখানে আমি পোস্টগ্র্রেস এবং পেগডমিনকে পরিষেবা হিসাবে অন্তর্ভুক্ত করেছি। আরও বিশদের জন্য: পকেডমিনকে ডকারে পোস্টগ্রিসের সাথে সংযুক্ত করা হচ্ছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.