我对docker和postgres有一个奇怪的问题。我无法从本地计算机连接到Docker容器内的psql。
首先,我使用以下命令创建了容器:
docker run -d -p 5432:5432 --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword postgres
之后,我使用以下命令执行了容器:
docker exec -it my-postgres bash
在容器中,我用postgres用户启动了psql:
psql -U postgres
我创建了一个新数据库:
CREATE DATABASE mytestdb;
一切都在容器内工作,但是如果我想从我的机器连接到它,它只会显示我机器上的数据库。我尝试使用此方法连接到postgres:
psql -h localhost -p 5432 -U postgres
我应该显示以下内容:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
mytestdb | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
但是我得到了:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------------+-----------------+----------+---------+---------+----------------------------------
user | user | UTF8 | C | C |
postgres | user | UTF8 | C | C |
template0 | user | UTF8 | C | C | =c/user +
| | | | | user =CTc/user
template1 | user | UTF8 | C | C | =c/user +
| | | | | user =CTc/user
(4 rows)
(END)
在每个教程中,我都看到他们做到了,但是对我来说,它是行不通的。所以请帮助我。
答案 0 :(得分:0)
问题是在创建数据库时。
answer = input("What's your number?")
print(answer)
for z in answer:
if int(z) < 2:
print('SMALL')
elif int(z) < 10:
print('MEDIUM')
else:
print('LARGE')
您忘了添加CREATE DATABASE mytestdb
,该命令应类似于;
然后您有了数据库,可以使用以下命令从容器或主机内部访问数据库