Tha*_*kis 3 debugging mongodb docker dockerfile docker-compose
我创建了一个程序并进行了测试,效果很好。我决定对其进行 dockerize,似乎在几个小时或几天后,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
Run Code Online (Sandbox Code Playgroud)
以及它们构建的三个 Dockerfile:
节点服务器:
FROM node:14.16.1
COPY package*.json ./
RUN npm install
COPY . ./
CMD [ "npm", "start"]
Run Code Online (Sandbox Code Playgroud)
蒙戈数据库:
FROM mongo:5.0.3
CMD docker-entrypoint.sh mongod
Run Code Online (Sandbox Code Playgroud)
python脚本
FROM python:3.9
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . ./
CMD [ "python", "-u", "./init2.py" ]
Run Code Online (Sandbox Code Playgroud)
正如之前提到的,如果没有 Docker,应用程序就可以正常工作,并且不会出现数据库被删除的情况。我也尝试过内部 Docker 存储,它也做同样的事情。我尝试检查日志,发现每次数据库擦除时 pythonscript 容器中都会发生错误。我知道 pythonscript 中应该会发生错误,但应用程序中的任何位置都没有这样的代码来执行集合或数据库的删除(即使没有 Docker,此错误仍然会发生,但不会删除任何内容)。
有任何想法吗?
您可以创建一个外部卷并将mongoDB的数据添加到其中。这样,即使您关闭 docker-compose,您的数据也不会被擦除。
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:
- mongo_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
volumes:
mongo_data:
external: true
Run Code Online (Sandbox Code Playgroud)
现在你必须使用以下命令在 docker 中创建一个卷
docker volume create --name=mongo_data
Run Code Online (Sandbox Code Playgroud)
然后 docker-compose down 并
docker-compose up --build -d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2106 次 |
| 最近记录: |