在我的 docker compose 文件中,我指定了两个服务:phpant(一个来自 debian 的自定义镜像,其中编译了 PHP 并运行 postfix,因此 PHP 可以实际发送电子邮件)和一个从 docker hub 提取最新数据的 mysqldb 服务。
在 phpant 服务中我定义了一个卷:
volumes:
- "/var/www/html/config/"
安装后,我们将配置文件写入此文件夹。我们使用卷是因为我们希望即使推出新的/更新的映像,配置数据也能保留下来。
然而,当我们推送一个新图像时,它会丢失配置文件,并且该目录最终会变空。
我做错了什么?即使在更新该服务的 Docker 映像后,如何才能使数据卷保留下来?
笔记:Wordpress 图像似乎可以正确执行此操作,这也是我最初的想法。我尝试模仿他们的做法,但显然我跳过/错过了一步。
答案1
您指定仅有的容器内卷的路径。在此配置中,每次重新创建容器时,Docker 都会创建一个新卷。
如果希望卷数据持久化,则需要指定容器主机可访问的路径,用于存储卷数据。例如,相对于您的docker-compose.yml
:
volumes:
- ./config:/var/www/html/config
查看文档了解更多配置卷的方法。