以前,为了访问正在运行的dokku实例中的文件,我会运行:
docker ps
获取容器ID后跟
ls /var/lib/docker/aufs/diff/<container-id>/app/...
注意:我只是在使用&#39; ls&#39;作为示例命令。我最终想要引用一个特定的文件。
这必须已更改,因为无法再通过此路径访问容器ID。该文件夹中有大量的目录,但没有一个与任何正在运行的容器相匹配。
在这种情况下,似乎为整个容器安装一个卷是过度的。我知道我可以使用dokku run project-name ls
和docker exec <container-id> ls
来访问文件系统,但这些都不能满足我的用例。
为了更全面地解释一下,在我的dokku项目中,我有一些.sql文件,我用它来引导我的postgres DB。这些文件通过git push
与项目的其余部分一起推送。
我希望使用postgres dokku插件来运行以下内容:
dokku postgres:connect db-name < file-name.sql
这是我以前一直在使用的:
dokku postgres:connect db-name < /var/lib/docker/aufs/diff/<container-id>/app/file-name.sql
但不再有效。
对此有何想法?我错了吗?
非常感谢您的任何想法。
答案 0 :(得分:2)
这里的例子:
dokku apps
=====&GT;我的应用
DummyApp
dokku enter DummyApp
将bash输入DummyApp容器。
答案 1 :(得分:1)
永远不要依赖/var/lib/docker
文件系统路径,因为那里存储的大多数数据都依赖于storage driver currently in use,所以它可能会发生变化。
cat
来自现有容器的文件
docker exec <container> cat file.sql | dokku postgres:connect db-name
cat
图片中的文件
docker run --rm <image> cat file.sql | dokku postgres:connect db-name
从现有容器中复制文件
docker cp <container>:file.sql file.sql
dokku postgres:connect db-name < file.sql