我创建了一个程序并测试了它,运行正常。我决定将其Docker化,但似乎可能过了几个小时或几天后,mongoDB容器的数据全部被删除了。docker-compose.yml文件:
version: '3'
services:
node:
restart: always
build: ./nodeServer
container_name: nodeserver
ports:
- 5000:5000
depends_on:
- database
networks:
twitter_articles:
ipv4_address: 172.24.0.2
environment:
- TZ=Europe/Athens
database:
restart: always
build: ./mongoDump/database
container_name: mongodb
ports:
- 27017:27017
networks:
twitter_articles:
ipv4_address: 172.24.0.4
volumes:
- ./data:/data/db
environment:
- TZ=Europe/Athens
pythonscript:
restart: always
build: ./python
container_name: pythonscript
depends_on:
- database
networks:
twitter_articles:
ipv4_address: 172.24.0.3
environment:
- TZ=Europe/Athens
networks:
twitter_articles:
ipam:
config:
- subnet: 172.24.0.0/24
而且它们正在构建的三个 Dockerfile:
nodeserver:
FROM node:14.16.1
COPY package*.json ./
RUN npm install
COPY . ./
CMD [ "npm", "start"]
mongodb:
FROM mongo:5.0.3
CMD docker-entrypoint.sh mongod
Python 脚本
FROM python:3.9
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . ./
CMD [ "python", "-u", "./init2.py" ]
如之前所述,没有使用Docker时,应用程序可以正常工作,数据库不会被清除。我还尝试了内部Docker存储,但结果相同。我尝试检查日志,发现每次数据库被清除时,pythonscript容器中都会发生错误。我知道pythonscript中应该会出现错误,但是在应用程序中没有任何代码执行集合或数据库的删除操作(即使没有使用Docker,此错误仍然会发生,但不会删除任何内容)。
有什么想法吗?
volumes
数组,改用卷。 - Stephen Ng'etich