我正在尝试为使用基于文件的数据库的webapp构建Dockerfile。我希望能够从主机上挂载文件* 该文件位于完整软件安装的根目录中,因此安装完整的目录并不理想。
另一个问题是在第一次使用之前,尚未创建数据库文件。第一次用户将没有数据库,但另一个用户可能没有。我不能在建造过程中“装载”任何东西**我相信。
它可能会像这样工作:
-v
启动容器来装入文件如果用户不需要额外的启动/停止会更好。即使它是,我仍然在寻找一种方法来做这个用户友好,可能有2'方法'启动它(也许我可以在docker-compose和'普通'方法中定义第一启动的东西? )。
我怎么能以简单的方式做到这一点,以便任何初次使用的用户都清楚?
*原因是您可以将Dockerfile和数据库文件复制为备份,并且仅使用这两个元素启动并运行。
** How to mount host volumes into docker containers in Dockerfile during build
答案 0 :(得分:1)
可行的一种方法是:
使用数据容器而不是卷。所以正常用法是:
docker run --name data_con my_db echo "my_db data container"
docker run -d --volumes-from data_con my_db
...
第一个容器应立即退出,但设置第二个容器中使用的卷。