如何 运行 Prestashop docker 具有持久数据的容器?

Howto run a Prestashop docker container with persistent data?

我在许多 docker 示例中遗漏了一些东西,那就是持久数据。如果我断定每个停止的容器都会丢失它的数据,我是对的吗?

我得到了这张 Prestashop 图片 运行 它是内部数据库: https://hub.docker.com/r/prestashop/prestashop/

你刚刚运行docker run -ti --name some-prestashop -p 8080:80 -d prestashop/prestashop

那么你得到了你的演示,但不是很实用。 首先,我需要挂接一个外部 MySQL 容器,但是如果我的服务器重新启动,那个容器也会丢失所有数据。

那么将要添加到 prestashop 容器中的所有模块和主题呢?

它与卷有关,但我不清楚如何正确映射所有主机卷以及通常选择主机的路径。 /opt/prestashop 嗯?

首先,我对 PrestaShop 没有任何经验。这是一个示例,您可以将其用于每个 docker 容器(您希望从中保存数据)。 使用新版本的 docker (1.11) 可以很容易地 'persist' 您的数据。 首先创建您的命名卷:

docker volume create --name prestashop-volume

您将在 /var/lib/docker/volumes 中看到此卷: prestashop 卷

创建命名卷容器后,您可以将容器与卷容器连接:

docker run -ti --name some-prestashop -p 8080:80 -d -v prestashop-volume:/path/to/what/you/want/to/persist :prestashop/prestashop

(当你真的想持久化一切时,我觉得你可以使用路径 :/

现在您可以在数据库上做您想做的事了。 当您的容器出现故障或您删除容器时,命名卷仍会存在,您可以将容器与命名卷重新连接。

为了使它更简单,您可以创建一个 cron-job,它创建 /var/lib/docker/volumes/prestashop-volume/ 内容的 .tar 当一切都消失时,您可以通过重新创建命名卷并在其中取消tar您的.tar-文件来恢复您的卷。