问题描述
在过去的几天里,我开始深入研究docker,学习了如何构建映像以及如何从该映像运行容器,还了解了docker-compose以及如何管理多个容器,然后我想测试我的知识,我用MysqL应用程序创建了一个简单的nodejs,然后在创建过程中即时通讯时,我读到了一些有关卷的信息,必须将其与数据库一起使用才能持久化数据。
所以我不明白的是:可以说我部署了映像并在digitalocean服务器中运行docker-compose文件,这将是MysqL数据库的本地卷,并且如果im在容器中运行MysqL,为什么我需要在服务器本身中使用本地MysqL,希望您能理解我的问题所在。
我不知道即时消息理解卷是否正确,当我将nodejs + MysqL db部署到活动服务器时,任何人都可以在生产级别向我解释卷的工作原理,如何持久化db数据。
解决方法
当您的应用程序运行时,它将执行某些操作,例如插入,删除,更改等。当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