如何在 docker-compose 中访问 Postgres 数据库
How to access Postgres database within docker-compose
我是 Postgres 和 Docker 的新手,但我正在使用 Django 构建一个 Web 应用程序,该应用程序 运行 位于 docker 和 postgresql 数据库中。我正在尝试通过命令提示符或 pgweb 查看我的 Postgres 数据库。
不幸的是,我似乎根本找不到数据库,我尝试使用 postgres psql 终端命令,但里面没有列出我的数据库。我的问题是,postgresql 数据库如何存储在 docker-compose 容器中。我需要手动进入容器然后查看数据库吗?我的最终目标是能够看到我在 postgresql 数据库中的所有表和数据的列表。
任何解释 postgresql 数据库如何与 docker-compose 交互的文档将不胜感激。
谢谢!
我最近刚添加了 Pgweb,但它似乎不起作用
Local.YML
version: '2'
volumes:
postgres_data_local: {}
postgres_backup_local: {}
services:
django:
build:
context: .
dockerfile: ./compose/local/django/Dockerfile
depends_on:
- postgres
volumes:
- .:/app
environment:
- POSTGRES_USER=vicki
- USE_DOCKER=yes
ports:
- "8000:8000"
command: /start.sh
postgres:
build:
context: .
dockerfile: ./compose/production/postgres/Dockerfile
volumes:
- postgres_data_local:/var/lib/postgresql/data
- postgres_backup_local:/backups
environment:
- POSTGRES_USER=vicki
pgweb:
container_name: pgweb
restart: always
image: sosedoff/pgweb
ports:
- "8081:8081"
links:
- postgres:postgres
environment:
- DATABASE_URL=postgres://postgres:postgres@postgres:5432/postgres
depends_on:
- postgres
这是我正在谈论的 Postgres 终端 psql,当我打开我的终端并且 运行:
postgres@dom-Inspiron-7559:~$ psql
psql (9.3.19)
Type "help" for help.
postgres=# \l
postgres=#
出现了这个数据库列表,但我不认为 vickibot 与 vicki 相同。
(我用 django cookiecutter 制作了两个应用程序,一个在 docker 内,一个不在 docker 内。我相信我现在使用的是 "vicki",它在 docker 容器,但我又一次不确定,也不知道如何判断我的模型文件引用的是哪个数据库。我想知道我是否需要以某种方式进入 docker 容器来查看数据库)
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
test1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
vickibot | dominic | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(5 rows)
要访问容器中的 postgres,运行 容器范围内的 cli
docker-compose run postgres psql
您还可以连接到您现有配置中尚未发布的容器发布端口。
postgres:
build:
context: .
dockerfile: ./compose/production/postgres/Dockerfile
volumes:
- postgres_data_local:/var/lib/postgresql/data
- postgres_backup_local:/backups
ports:
- '5433:5432'
environment:
- POSTGRES_USER=vicki
然后连接到您发布的端口
psql -h localhost -p 5433
我是 Postgres 和 Docker 的新手,但我正在使用 Django 构建一个 Web 应用程序,该应用程序 运行 位于 docker 和 postgresql 数据库中。我正在尝试通过命令提示符或 pgweb 查看我的 Postgres 数据库。
不幸的是,我似乎根本找不到数据库,我尝试使用 postgres psql 终端命令,但里面没有列出我的数据库。我的问题是,postgresql 数据库如何存储在 docker-compose 容器中。我需要手动进入容器然后查看数据库吗?我的最终目标是能够看到我在 postgresql 数据库中的所有表和数据的列表。
任何解释 postgresql 数据库如何与 docker-compose 交互的文档将不胜感激。
谢谢!
我最近刚添加了 Pgweb,但它似乎不起作用
Local.YML
version: '2'
volumes:
postgres_data_local: {}
postgres_backup_local: {}
services:
django:
build:
context: .
dockerfile: ./compose/local/django/Dockerfile
depends_on:
- postgres
volumes:
- .:/app
environment:
- POSTGRES_USER=vicki
- USE_DOCKER=yes
ports:
- "8000:8000"
command: /start.sh
postgres:
build:
context: .
dockerfile: ./compose/production/postgres/Dockerfile
volumes:
- postgres_data_local:/var/lib/postgresql/data
- postgres_backup_local:/backups
environment:
- POSTGRES_USER=vicki
pgweb:
container_name: pgweb
restart: always
image: sosedoff/pgweb
ports:
- "8081:8081"
links:
- postgres:postgres
environment:
- DATABASE_URL=postgres://postgres:postgres@postgres:5432/postgres
depends_on:
- postgres
这是我正在谈论的 Postgres 终端 psql,当我打开我的终端并且 运行:
postgres@dom-Inspiron-7559:~$ psql
psql (9.3.19)
Type "help" for help.
postgres=# \l
postgres=#
出现了这个数据库列表,但我不认为 vickibot 与 vicki 相同。 (我用 django cookiecutter 制作了两个应用程序,一个在 docker 内,一个不在 docker 内。我相信我现在使用的是 "vicki",它在 docker 容器,但我又一次不确定,也不知道如何判断我的模型文件引用的是哪个数据库。我想知道我是否需要以某种方式进入 docker 容器来查看数据库)
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
test1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
vickibot | dominic | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(5 rows)
要访问容器中的 postgres,运行 容器范围内的 cli
docker-compose run postgres psql
您还可以连接到您现有配置中尚未发布的容器发布端口。
postgres:
build:
context: .
dockerfile: ./compose/production/postgres/Dockerfile
volumes:
- postgres_data_local:/var/lib/postgresql/data
- postgres_backup_local:/backups
ports:
- '5433:5432'
environment:
- POSTGRES_USER=vicki
然后连接到您发布的端口
psql -h localhost -p 5433