我有一个dockerized服务,它包含一个带有REST REST和mongoDB存储系统的服务器。
首先,我有两个docker hub图像:
我正在尝试使用来自我服务器的快照创建备份。当我执行恢复并开始唤醒服务时,mongoDB崩溃了。这是错误日志:
mongo_1 | 2018-01-09T18:50:17.770+0000 F STORAGE
[initandlisten] Unable to start up mongod due to missing featureCompatibilityVersion document.
mongo_1 | 2018-01-09T18:50:17.774+0000 F STORAGE
[initandlisten] Please run with --repair to restore the document.
mongo_1 | 2018-01-09T18:50:17.774+0000 F -
[initandlisten] Fatal Assertion 40652 at src/mongo/db/db.cpp 660
mongo_1 | 2018-01-09T18:50:17.775+0000 F - [initandlisten]
这是我的Dockerfile:
FROM node:alpine
RUN mkdir /CSCFUTSAL
WORKDIR /CSCFUTSAL
COPY package.json /CSCFUTSAL
RUN cd /CSCFUTSAL
RUN npm install
RUN npm install -g @angular/cli
COPY . /CSCFUTSAL
RUN ng build --prod
EXPOSE 80
我的docker-compose.yml:
version: '2'
services:
mongo:
image: mongo:3.6.0
volumes:
- /data/mongodb/db:/data/db
ports:
- "27017:27017"
api:
build: .
command: node ./bin/www
volumes:
- api-img:/CSCFUTSAL/public/plantillas
ports:
- "80:80"
links:
- mongo
volumes:
api-img:
driver: local
我不知道如何修复它而不会丢失存储的数据。
答案 0 :(得分:0)
答案在于错误。
C:\Program Files\MongoDB\Server\3.6\bin
。mongod.exe --repair
此命令将进行必要的赔偿。
之后,只需从同一位置运行mongod.exe
。
以上解决方案对我有用。我希望这能解决你的问题。
答案 1 :(得分:0)
当您在Docker中运行此操作时,您需要在容器中运行mongod --repair
命令。确保备份了您要修复的数据,然后执行以下操作:
docker container run --rm -v /data/mongodb/db:/data/db mongo:3.6.0 mongod --repair
假设您的本地数据位于/data/mongodb/db
,您的Docker撰写文件就是这样。