【问题标题】:i dont understand docker volumes for DBs我不了解数据库的 docker 卷
【发布时间】:2020-08-14 18:04:28
【问题描述】:

在过去的几天里,我开始深入研究 docker,我学会了如何构建一个镜像,如何从该镜像运行一个容器,还学习了 docker-compose 以及如何管理多个容器,然后我想测试我的知识,我用一个 mysql 应用程序创建了一个简单的 nodejs,然后当我在创建中间时,我读了一些关于卷的东西,它必须与数据库一起使用来持久化数据。

所以我不明白的是:假设我在 digitalocean 服务器中部署了映像并运行 docker-compose 文件,mysql 数据库的本地卷将是什么,如果我是在容器中运行 mysql,为什么我需要在服务器本身中使用本地 mysql,我希望你明白我的问题是什么。

我不知道我对卷的理解是否正确,谁能向我解释生产级别的卷在我将 nodejs + mysql db 部署到实时服务器时它是如何工作的,如何持久化 db 数据。

【问题讨论】:

  • 请查看hub.docker.com/_/mysql 并阅读“存储数据的位置”部分。他们已经回答了你的问题。简短的回答你可以只使用映射到主机文件夹的卷。这就对了。 Docker-compose 可以为您做到这一点。

标签: mysql docker docker-compose


【解决方案1】:

当您的应用程序运行时,它会执行一些操作,如插入、删除、更改等。当 MySQL 容器出现故障时。它将删除整个数据。所以,我们未来需要的所有数据。我们输入音量。卷不仅仅是主机中的一个目录。

下次我们启动容器时,它会自动从该特定位置选择数据。 Docker 只是将卷映射到容器。如果你改变任何体积,它也会反映在容器内。

version '3'
volumes:
  web_data:
    name: web

services:
  app:
   image: nginx:alpine
   Ports:
    - 80:80
   volumes:
    - web_data:/usr/share/nginx/html:ro

【讨论】:

  • 谢谢,现在清楚了,我以为我需要指向主机中的mysql数据文件夹,愚蠢hhh
  • 没错,你只需要做一个volume来持久化MySQL数据。
猜你喜欢
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多