如何使用永久的sqlite数据库运行node.js进程?
My Node.JS应该使用本地SQLite数据库存储数据。但是,当我停止容器时,SQLite数据会丢失,因为它正在docker路径上写入(容器停止时会被删除),如何使它保持SQLite数据库的持久性 这是我的Dockerfile:如何使用永久的sqlite数据库运行node.js进程?,node.js,sqlite,docker,Node.js,Sqlite,Docker,My Node.JS应该使用本地SQLite数据库存储数据。但是,当我停止容器时,SQLite数据会丢失,因为它正在docker路径上写入(容器停止时会被删除),如何使它保持SQLite数据库的持久性 这是我的Dockerfile: FROM node:10.15.3 RUN mkdir -p /usr/src/test WORKDIR /usr/src/test COPY package.json /usr/src/test RUN npm install COPY . /usr/src
FROM node:10.15.3
RUN mkdir -p /usr/src/test
WORKDIR /usr/src/test
COPY package.json /usr/src/test
RUN npm install
COPY . /usr/src/test
CMD ["node","index.js"]
我读到另一个问题,我应该使用VOLUME[]
,但我不知道如何使用它
如何使SQLite数据库保持持久性
运行容器时,使用docker run-v
选项装载某种外部存储来保存数据库。如果数据库文件位于一个没有应用程序源的目录中,它会有所帮助
docker run -v $PWD/db:/usr/src/test/db ...
维护DOCKER中的文件存储可能有点毛茸茸的(如果你要查看像DOCKER群或KubNeNes这样的集群系统),情况会变得更糟,你应该考虑在第二个容器中使用一个“真实”的关系数据库。 [I]应该使用
卷[]
除非您100%清楚它的用途以及使用它的原因,否则您不应该在Dockerfile中使用VOLUME
。它通常只会产生令人困惑的副作用。您可以如上所示将外部文件或命名卷装载到容器中,而无需任何VOLUME
声明