2017-07-28 89 views
0

我试图将我的钢轨应用程序移动到生产的码头容器中,并且我将生产转储加载到容器中的最后一步。钢轨错误:关系已存在

我已经做了我目前的生产数据库

pg_dump pdfcat_production > ~/pdfcat-20170728.dump 

我这一次之前加载的备份和它的工作,这是失败的第二次;

docker-compose run -e 'RAILS_ENV=production' app rake db:drop 
docker-compose run -e 'RAILS_ENV=production' app rake db:create 
cat ~/pdfcat-20170727.dump | docker exec -i 79766cf70617 psql -Upostgres 

我得到这个错误;

ERROR: relation "categories" already exists 
ERROR: role "pdfcat" does not exist 
ERROR: relation "categories_id_seq" already exists 
ERROR: role "pdfcat" does not exist 
ALTER SEQUENCE 
ERROR: relation "clients" already exists 
ERROR: role "pdfcat" does not exist 
ERROR: relation "clients_id_seq" already exists 
ERROR: role "pdfcat" does not exist 

当它完成所有这些错误后,我无法加载Web应用程序。

+0

您是否知道数据在容器中存在?如果你删除了容器然后加载它,它不应该给出错误。但是,您可能会将此加载过程包含在您的dockerfile中,以便将数据加载到映像中,并准备好使用该映像 – Ayushya

+0

如果尝试删除postgres容器,则会从守护进程获取错误响应:driver“aufs”failed删除根文件系统的79766cf7061767655837750e72a0d12046081b5946562b67b576e0c6abfbc023:重命名的/ var/lib中/泊坞窗/ AUFS到/ mnt/178acb7c7bb25ef51b5c993bfd66f9e8689abe8e372808643a909aef326b2c4b的/ var/lib中/泊坞窗/ AUFS到/ mnt/178acb7c7bb25ef51b5c993bfd66f9e8689abe8e372808643a909aef326b2c4b去除:设备或资源忙 – map7

+0

你怎么删除呢? 'docker rm '? – Ayushya

回答

0

第二次加载会给出错误,因为数据已经加载到容器中,因此不会被重新创建。这次你不需要加载数据。

至于目前的情况,你可以删除容器并重新开始,这次数据加载不会给出任何错误。要移除容器,您可以使用docker rm <contianer_id>,如果在停止或移除容器时出现问题,那么系统将重新启动,以防止故障并停止所有容器。重新启动码头服务也可能是一种选择。

如果您想准备一张可以首次加载数据的图像,那么您可以在dockerfile中包含此数据加载过程。

+0

我无法重新启动这个系统,有没有另一种方法? – map7