【问题标题】:Docker-compose creates a fresh db every time, data is not saveddocker-compose 每次创建一个新的数据库,数据不保存
【发布时间】:2017-07-19 14:35:14
【问题描述】:

我正在做一些本地 WP 开发。每次我做出改变(比如添加一个插件)

然后运行:docker-compose up -d && docker-compose logs -f wordpress

它会创建一个新的数据库,并且插件会随着任何更改而被删除。我可以每次都导出一个带有多合一迁移插件的.wp 文件,然后再次导入,但有什么更好的方法?

【问题讨论】:

  • 如果可能的话,提供你的 docker-compose.yml
  • 很遗憾,我无法提供它,请您指出我应该寻找的方向吗?

标签: wordpress docker docker-compose


【解决方案1】:

在您的 docker-compose.yml 中尝试top-level volume。如果配置得当,无论您的后端服务被 docker-compose 重新启动/重建/销毁多少次,您都可以使用卷在文件系统级别持久保存后端数据。

【讨论】:

    【解决方案2】:

    如果您希望保留任何数据,则可以将这些数据挂载到卷中。 docker中volumes的使用可以从documentation了解。对于 wordpress,您可以将主机目录挂载到容器的 /var/www/html/ 中。以下卷配置应该对您有所帮助。

    volumes:
      - ./html/:/var/www/html/
    

    提示 1:如果您想在映像中安装一些东西,请在 dockerfile 本身中安装并创建您自己的自定义映像。 Build 应该可以帮助您在 docker-compose.yml 中使用 dockerfile。

    提示 2: 为了让您更好地了解如何在 docker 中进行本地开发,我建议您为此目的使用 dockerfile。

    在 dockerfile 中,你可以使用RUN 命令来安装任何东西。每个 RUN 命令的输出都存储在 cache 中。因此,一旦您成功构建了映像,则不会执行下一个 RUN 命令,而是将使用它的 cache

    【讨论】:

      【解决方案3】:

      在服务卷下可以使用如下语法:

      host:container 
      

      例子:

      wordpress:
      
        volumes:
      
            -../html:/var/www/html
      

      指定绝对路径映射

      /opt/data:/var/lib/mysql
      

      主机上的路径,相对于 Compose 文件

      ./cache:/tmp/cache
      

      用户相对路径

      ~/configs:/etc/configs/:ro
      

      命名卷

      datavolume:/var/lib/mysql
      

      【讨论】:

        猜你喜欢
        • 2021-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        相关资源
        最近更新 更多