我正在尝试使用psql
访问PostgreSQL的shell(docker-compose
),但是遇到了一些困难...这是我的docker-compose
文件:
main:
build: .
volumes:
- .:/code
links:
- postgresdb
environment:
- DEBUG=true
postgresdb:
build: utils/sql/
ports:
- "5432"
environment:
- DEBUG=true
我尝试通过运行
psql
和main
服务来访问postgresdb
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'
}
最佳答案
您正在尝试从自身连接Postgresdb容器,但是容器不知道您在postgresdb
容器内设置的别名main
的信息。
考虑以下示例:
$ docker run -it --rm ubuntu hostname --fqdn
817450b29b34
现在您看到Postgresdb不知道如何解析
postgresdb
。但是无论如何,postgresdb
应该可以从main
解析。您有几个机会可以解决此问题:
docker-compose.yml
中); main
容器访问Postgresdb:$ docker exec -it main_container_full_name psql -h postgresdb -U docker mydatabase