Postgresql 如何通过Dockerfile中的命令填充表

Postgresql 如何通过Dockerfile中的命令填充表,postgresql,docker,Postgresql,Docker,我构建(没有错误)mypostgresimage。有一些命令与postgresql相关: RUN /etc/init.d/postgresql start &&\ psql --command "CREATE USER cobrain WITH SUPERUSER PASSWORD 'cobrain';" &&\ createdb -O cobrain datasets &&\ psql --command "CREA

我构建(没有错误)
mypostgres
image。有一些命令与postgresql相关:

RUN    /etc/init.d/postgresql start &&\
    psql --command "CREATE USER cobrain WITH SUPERUSER PASSWORD 'cobrain';" &&\
    createdb -O cobrain datasets &&\
    psql --command "CREATE TABLE datasets (id varchar PRIMARY KEY, creation_timestamp bigint, type varchar, owner varchar, datafiles varchar[]);" &&\
    psql --command  "INSERT INTO datasets (id, creation_timestamp, type, owner, datafiles) VALUES ('111', 1111345, 'MEDICAL', 'Yandex', ARRAY['blood.data'])"
我通过以下方式运行容器:

docker run -p 32779:5432 mypostgres:latest
然后在另一个终端,我尝试访问postgres服务:

psql -h localhost -p 32779 -U cobrain datasets
datasets=# select * from datasets;
ERROR:  relation "datasets" does not exist


这些消息对我来说很奇怪,因为我创建了值并将其插入表中。如何克服这些问题并执行
选择
语句

该表可能位于不同的架构中。创建表的用户不是
cobrain
。当连接为
cobrain
时应该创建表,如果这是目的的话。您是否在docker中运行了该命令,或者您正在尝试连接到主机上的数据库?@JakubKania我尝试从主机连接,不在容器内。@Glenn如何以另一个用户的身份运行psql命令`?只需从客户端运行create table和insert语句(您正在连接
-U corbain
)。docker容器只需要创建用户并启动实例,而不是创建/插入。表可能位于不同的架构中。创建表的用户不是
cobrain
。当连接为
cobrain
时应该创建表,如果这是目的的话。您是否在docker中运行了该命令,或者您正在尝试连接到主机上的数据库?@JakubKania我尝试从主机连接,不在容器内。@Glenn如何以另一个用户的身份运行psql命令`?只需从客户端运行create table和insert语句(您正在连接
-U corbain
)。docker容器只需要创建用户并启动实例,而不是创建/插入。
datasets=# \dt;
No relations found.