在 docker 文件中将 postgres 连接添加到 pgadmin
Adding postgress connections to pgadmin in docker file
有没有办法使用某些服务器连接预配置 pgadmin(可能通过环境变量)?
假设您有这个 docker-compose.yml,在此示例中类似于 PGADMIN_CONNECTIONS
env 变量? (PGADMIN_CONNECTIONS
可能不是有效的 ENV 变量,这只是一个例子)
version: '3'
services:
postgres:
image: postgres
hostname: postgres
ports:
- "5432:5432"
environment:
POSTGRES_USER: dbuser
POSTGRES_PASSWORD: dbpass
POSTGRES_DB: TEST_SM
pgadmin:
image: dpage/pgadmin4
ports:
- "80:80"
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD: admin
??PGADMIN_CONNECTIONS: dbuser:dbpass@postgres:5432
您需要定义一个 servers.json 文件来配置连接。它有很好的记录 here.
容器内的默认路径是/pgadmin4/servers.json
。你可以 COPY
你自己版本的 server.json 文件到一个新构建的镜像中,或者当它是 运行.
时将文件绑定挂载到容器中
无法通过JSON将密码传递给pgadmin,但在下面的示例中引用了包含密码的文件。请参阅下文了解更多信息。
server.json
文件的示例结构如下:
{
"Servers": {
"1": {
"Name": "pgadmin4@pgadmin.org",
"Group": "Servers",
"Host": "magic_db",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"PassFile": "/pgpass",
"SSLMode": "prefer"
}
}
}
/pgpass
需要以下结构:
hostname:port:database:username:password
所以对于上面的例子,它将是:
magic_db:5432:postgres:postgres:secretpassword
注意:密码在较新版本的 pgadmin 中已更改为 PassFile,如 here。
这个配置适合我:
- postgres_db_data/
- pgpass
- servers.json
- docker-compose.yaml
创建空目录调用postgres_db_data
使用以下内容创建“pgpass”
host.docker.internal:15432:postgres:postgres:postgres
- 使用以下内容创建“servers.json”
{
"Servers": {
"1": {
"Name": "docker_postgres",
"Group": "docker_postgres_group",
"Host": "host.docker.internal",
"Port": 15432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"PassFile": "/pgpass",
"SSLMode": "prefer"
}
}
}
- 使用以下内容创建“docker-compose.yaml”
version: "3.9"
services:
db:
image: postgres
volumes:
- ./postgres_db_data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
ports:
- "15432:5432"
pgadmin:
image: dpage/pgadmin4
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin@pgadmin.com #the username to login to pgadmin
PGADMIN_DEFAULT_PASSWORD: pgadmin # the password to login to pgadmin
ports:
- "5050:80"
volumes:
- ./servers.json:/pgadmin4/servers.json # preconfigured servers/connections
- ./pgpass:/pgpass # passwords for the connections in this file
depends_on:
- "db"
运行 docker compose up
打开http://localhost:5050/browser/
有没有办法使用某些服务器连接预配置 pgadmin(可能通过环境变量)?
假设您有这个 docker-compose.yml,在此示例中类似于 PGADMIN_CONNECTIONS
env 变量? (PGADMIN_CONNECTIONS
可能不是有效的 ENV 变量,这只是一个例子)
version: '3'
services:
postgres:
image: postgres
hostname: postgres
ports:
- "5432:5432"
environment:
POSTGRES_USER: dbuser
POSTGRES_PASSWORD: dbpass
POSTGRES_DB: TEST_SM
pgadmin:
image: dpage/pgadmin4
ports:
- "80:80"
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD: admin
??PGADMIN_CONNECTIONS: dbuser:dbpass@postgres:5432
您需要定义一个 servers.json 文件来配置连接。它有很好的记录 here.
容器内的默认路径是/pgadmin4/servers.json
。你可以 COPY
你自己版本的 server.json 文件到一个新构建的镜像中,或者当它是 运行.
无法通过JSON将密码传递给pgadmin,但在下面的示例中引用了包含密码的文件。请参阅下文了解更多信息。
server.json
文件的示例结构如下:
{
"Servers": {
"1": {
"Name": "pgadmin4@pgadmin.org",
"Group": "Servers",
"Host": "magic_db",
"Port": 5432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"PassFile": "/pgpass",
"SSLMode": "prefer"
}
}
}
/pgpass
需要以下结构:
hostname:port:database:username:password
所以对于上面的例子,它将是:
magic_db:5432:postgres:postgres:secretpassword
注意:密码在较新版本的 pgadmin 中已更改为 PassFile,如 here。
这个配置适合我:
- postgres_db_data/
- pgpass
- servers.json
- docker-compose.yaml
创建空目录调用postgres_db_data
使用以下内容创建“pgpass”
host.docker.internal:15432:postgres:postgres:postgres
- 使用以下内容创建“servers.json”
{
"Servers": {
"1": {
"Name": "docker_postgres",
"Group": "docker_postgres_group",
"Host": "host.docker.internal",
"Port": 15432,
"MaintenanceDB": "postgres",
"Username": "postgres",
"PassFile": "/pgpass",
"SSLMode": "prefer"
}
}
}
- 使用以下内容创建“docker-compose.yaml”
version: "3.9"
services:
db:
image: postgres
volumes:
- ./postgres_db_data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
ports:
- "15432:5432"
pgadmin:
image: dpage/pgadmin4
restart: always
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin@pgadmin.com #the username to login to pgadmin
PGADMIN_DEFAULT_PASSWORD: pgadmin # the password to login to pgadmin
ports:
- "5050:80"
volumes:
- ./servers.json:/pgadmin4/servers.json # preconfigured servers/connections
- ./pgpass:/pgpass # passwords for the connections in this file
depends_on:
- "db"
运行
docker compose up
打开http://localhost:5050/browser/