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