使用 pgAdmin 在 docker 容器内的数据库上启用 postgresql 函数调试

问题描述 投票:0回答:1

我有一个在 docker 容器内运行的 postgresql 数据库,并且想要使用 pgAdmin 调试该数据库上的功能。当遵循官方指南时,在我的本地 postgres 安装上执行此操作不会出现任何问题。 但是,当我对 docker 容器内的数据库尝试同样的操作时,我遇到了问题。

要调试,我需要在我的

shared_preload_libraries = '$libdir/plugin_debugger.dll'
文件中添加这一行:
postgresql.conf
。 在 docker 容器中编辑文件非常简单,但是当我这样做并尝试重新启动容器时,它会向我显示以下消息:

致命:无法访问文件“$libdir/plugin_debugger.so”:没有这样的文件或目录

我尝试遵循这个要点,但是,当

git clone git://git.postgresql.org/git/pldebugger.git
执行时,我会看到以下消息

致命:远程错误:访问被拒绝或存储库未导出:/git/pldebugger.git

我正在使用官方

postgres:latest
图像。有谁知道我可以做到这一点吗?

postgresql docker debugging
1个回答
0
投票

🗎

Dockerfile
(这将安装所需的依赖项,然后从源代码构建扩展。)

FROM postgres:latest

ENV POSTGRES_DB ""
ENV POSTGRES_USER ""
ENV POSTGRES_PASSWORD ""

RUN apt-get update -q && \
    apt-get install -q -y git make gcc libkrb5-dev postgresql-server-dev-16

WORKDIR /usr/share/postgresql/16/contrib

ENV USE_PGXS=1

RUN git clone https://github.com/EnterpriseDB/pldebugger.git && \
    cd pldebugger && \
    make

COPY setup-pg-admin.sh /docker-entrypoint-initdb.d/

🗎

setup-pg-admin.sh
(这将确保数据库启动时加载扩展。)

#!/bin/bash

cat <<EOT >> /var/lib/postgresql/data/postgresql.conf
shared_preload_libraries='/usr/share/postgresql/16/contrib/pldebugger/plugin_debugger.so'
EOT

🗎

docker-compose.yml
(这不是绝对必要的,但它展示了如何使用所需的环境变量等启动 PostgreSQL)

version: '3'
services:
  data-pipeline-db:
    image: data-pipeline-db
    restart: always
    container_name: data-pipeline-db
    shm_size: 512mb
    build:
      context: .
      dockerfile: ./Dockerfile
    environment:
      - POSTGRES_DB=testing
      - POSTGRES_USER=test
      - POSTGRES_PASSWORD=test

© www.soinside.com 2019 - 2024. All rights reserved.