gpt4 book ai didi

postgresql - docker-compose:访问 postgres 的外壳(psql)

转载 作者:IT老高 更新时间:2023-10-28 12:45:40 24 4
gpt4 key购买 nike

我正在尝试使用 docker-compose 访问 PostgreSQL 的 shell (psql),但我遇到了一些困难...这是我的 docker-撰写文件:

main:
build: .
volumes:
- .:/code
links:
- postgresdb
environment:
- DEBUG=true


postgresdb:
build: utils/sql/
ports:
- "5432"
environment:
- DEBUG=true

我尝试通过运行 main 以及 postgresdb 服务来访问 psql

docker-compose run postgresdb psql -h postgresdb -U docker mydatabase

但我得到的只是 psql: could not translate host name "postgresdb"to address: Name or service not known...我不明白,因为我使用 postgresdb 作为数据库配置文件中的主机 例如:

DB_ACCESS = {
'drivername': 'postgres',
# Name of docker-compose service
'host': 'postgresdb',
'port': '5432',
'username': 'docker',
'password': '',
'database': 'mydatabase'
}

最佳答案

自从最初提出问题以来,情况发生了一些变化。

以下是今天使用 docker-compose 访问 PostgreSQL 的 shell (psql) 的方法:

  1. 使用 docker-compose.yml 版本 '2' 配置文件
  2. 使用“depends_on”而不是“链接”(新版本“2”)
  3. 使用“服务”分解您的容器

docker-compose.yml

version: '2'
services:
postgresdb:
build: utils/sql/
ports:
- "5432"
environment:
- DEBUG=true
main:
build: .
volumes:
- .:/code
depends_on:
- postgresdb
environment:
- DEBUG=true

在您的 docker 引擎外壳中...

  1. 通过 docker ps 命令查找容器 ID(或容器名称)
  2. 使用该 id 打开 shell 提示符
  3. 将用户切换到 postgres 用户帐户
  4. 运行 psql

请看下面的例子:

                        ##         .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.11.2, build HEAD : a6645c3 - Wed Jun 1 22:59:51 UTC 2016
Docker version 1.11.2, build b9f10c9
docker@default:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b563764171e2 poc_web "bundle exec rails s " 43 minutes ago Up 43 minutes 0.0.0.0:3000->3000/tcp poc_web_1
c6e480b0f26a postgres "/docker-entrypoint.s" 49 minutes ago Up 49 minutes 0.0.0.0:5432->5432/tcp poc_db_1
docker@default:~$ docker exec -it c6e480b0f26a sh
# su - postgres
No directory, logging in with HOME=/
$ psql
psql (9.5.3)
Type "help" for help.

postgres=#

注意事项:

  1. docker-compose up 会按依赖顺序启动服务
  2. 如果你想用官方搭建一个postgres容器图片,您的 docker-compose.yml 可能看起来更像以下内容:

    version: '2'
    services:
    db:
    image: postgres
    ports:
    - "5432:5432"
    . . .

引用文献

https://docs.docker.com/compose/compose-file/

关于postgresql - docker-compose:访问 postgres 的外壳(psql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29852583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com