为什么当我将我的 Meteor 应用程序转换为使用 Docker 时,我的 MongoDB 数据消失了?
Why does my MongoDB data disappear when I convert my Meteor App to use Docker?
我最近将我的流星应用切换为使用 Docker,因为我正在尝试创建一个新的微服务。以前,我会使用 meteor run
在本地部署我的应用程序,但我已经切换到 docker-compose up --build
在我的项目的根目录使用 docker-compose.yml 和 Docker 我的 Meteor 应用程序目录中的文件。我终于得到了东西 运行,这很棒,但是我通过 meteor run
启动应用程序时保留的所有数据都没有被正确访问。我知道数据仍然存在,因为当我尝试使用 meteor run
启动应用程序时,数据会从之前的会话中恢复。
这让我相信我没有通过 Docker 正确连接到 Mongo,如果您能帮助我找到答案,我将不胜感激。
仅供参考,我正在连接到 一个 mongo 实例 它只是一个新擦除的数据库。
docker-compose.yml:
version: '3'
services:
aldoa:
build:
context: ./js/app
dockerfile: Dockerfile
ports:
- '3000:3000'
links:
- mongo
environment:
ROOT_URL: ${APP_ROOT_URL:-http://localhost}
MONGO_URL: mongodb://mongo:27017/meteor
PORT: 3000
volumes:
- ./opt/app:/./js/app
mongo:
image: mongo:latest
ports:
- '27017:27017'
command:
- --storageEngine=wiredTiger
volumes:
- data:/data/db
volumes:
data:
提前致谢!
然后你在开发模式下使用 meteor
或 meteor run
你 运行 启动流星。在那种模式下,除非你明确定义了 MONGO_URL
环境变量,否则 meteor 将在端口 3001 上启动它自己的 mongo 实例(或者,准确地说,用 -p
加一指定的流星端口).
在您的 docker 部署中,您正在为生产做正确的事情,并在默认端口 (27017) 上使用单独启动的 mongo 实例 运行ning。
您可以通过 运行ning:
从开发实例中导出数据
$ meteor
$ # in a separate terminal:
$ mongodump -p 3001 -d meteor
然后将其导入“真实”mongo 实例:
mongorestore /path/to/dump/created/above
我最近将我的流星应用切换为使用 Docker,因为我正在尝试创建一个新的微服务。以前,我会使用 meteor run
在本地部署我的应用程序,但我已经切换到 docker-compose up --build
在我的项目的根目录使用 docker-compose.yml 和 Docker 我的 Meteor 应用程序目录中的文件。我终于得到了东西 运行,这很棒,但是我通过 meteor run
启动应用程序时保留的所有数据都没有被正确访问。我知道数据仍然存在,因为当我尝试使用 meteor run
启动应用程序时,数据会从之前的会话中恢复。
这让我相信我没有通过 Docker 正确连接到 Mongo,如果您能帮助我找到答案,我将不胜感激。
仅供参考,我正在连接到 一个 mongo 实例 它只是一个新擦除的数据库。
docker-compose.yml:
version: '3'
services:
aldoa:
build:
context: ./js/app
dockerfile: Dockerfile
ports:
- '3000:3000'
links:
- mongo
environment:
ROOT_URL: ${APP_ROOT_URL:-http://localhost}
MONGO_URL: mongodb://mongo:27017/meteor
PORT: 3000
volumes:
- ./opt/app:/./js/app
mongo:
image: mongo:latest
ports:
- '27017:27017'
command:
- --storageEngine=wiredTiger
volumes:
- data:/data/db
volumes:
data:
提前致谢!
然后你在开发模式下使用 meteor
或 meteor run
你 运行 启动流星。在那种模式下,除非你明确定义了 MONGO_URL
环境变量,否则 meteor 将在端口 3001 上启动它自己的 mongo 实例(或者,准确地说,用 -p
加一指定的流星端口).
在您的 docker 部署中,您正在为生产做正确的事情,并在默认端口 (27017) 上使用单独启动的 mongo 实例 运行ning。
您可以通过 运行ning:
从开发实例中导出数据$ meteor
$ # in a separate terminal:
$ mongodump -p 3001 -d meteor
然后将其导入“真实”mongo 实例:
mongorestore /path/to/dump/created/above