如何使用永久的sqlite数据库运行node.js进程?

如何使用永久的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

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/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
声明