加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

docker – 如何在容器中挂载文件,在首次运行之前不可用?

发布时间:2020-12-16 03:26:50 所属栏目:安全 来源:网络整理
导读:我正在尝试为使用基于文件的数据库的webapp构建Dockerfile.我希望能够从主机上挂载文件* 该文件位于完整软件安装的根目录中,因此安装完整的目录并不是很理想. 另一个问题是在第一次使用之前,尚未创建数据库文件.第一次用户将没有数据库,但另一个用户可能没有

我正在尝试为使用基于文件的数据库的webapp构建Dockerfile.我希望能够从主机上挂载文件*
该文件位于完整软件安装的根目录中,因此安装完整的目录并不是很理想.

另一个问题是在第一次使用之前,尚未创建数据库文件.第一次用户将没有数据库,但另一个用户可能没有.我不能在建造期间“装载”任何东西**我相信.

它可能会像这样工作:

>第一个/新数据库启动:

>启动容器(不安装).
> webapp创建一个数据库.
>停止容器

>后续开始:

>使用-v启动容器以装入文件

如果用户不需要额外的启动/停止会更好.即使它是,我仍然在寻找一种方法来做这个用户友好,可能有2’方法’启动它(也许我可以在docker-compose和’普通’方法中定义第一启动的东西? ).

我怎么能以简单的方式做到这一点,以便任何第一次用户都清楚?

*原因是您可以将Dockerfile和数据库文件复制为备份,并且仅使用这两个元素启动并运行.

** How to mount host volumes into docker containers in Dockerfile during build

最佳答案
一种可行的方法是:

>在构建文件中启动数据库,使其有时间在退出之前创建默认文件.
>在上述指令之后,在Dockerfile中为文件声明一个VOLUME.这将导致在启动容器时将文件复制到卷中,假设您没有明确提供主机路径
>使用数据容器而不是卷.所以正常用法是:

 docker run --name data_con my_db echo "my_db data container"
 docker run -d --volumes-from  data_con my_db
 ...

第一个容器应立即退出,但设置第二个容器中使用的卷.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读