Docker MongoDB种子通知

问题描述 投票:0回答:1

我想在Docker Swarm中部署具有MongoDB和Web服务器的堆栈;数据库必须填充初始数据,我发现此有效solution。鉴于Stack服务以随意的顺序启动,我如何确定Web服务器将正确读取初始数据?

可能我需要一些通知系统(Redis?),但是我是MongoDB的新手,所以我正在寻找针对此问题的知名解决方案(我认为这很普遍)。

mongodb docker docker-swarm
1个回答
0
投票

我强烈建议您检查docker-compose.yml的运行状况检查。您可以将health check命令更改为特定的MongoDB检查,一旦运行状况检查准备就绪,则只有Web服务器将开始将请求发送到MongoDB容器。

看看示例文件。请根据需要更改健康检查

version: "3.3"

services:
  mongo:
    image: mongo
    ports:
      - "27017:27017"
    volumes:
      - ./data/mongodb/db:/data/db
    healthcheck:
      test: echo 'db.runCommand("ping").ok' | mongo mongo:27017/test --quiet 1
      interval: 10s
      timeout: 10s
      retries: 5
      start_period: 40s

  webserver:
    image: custom_webserver_image:latest
    volumes:
      - $PWD:/app
    links:
      - mongodb
    ports:
      - 8000:8000
    depends_on:
      - mongo

Ref:-https://docs.docker.com/compose/compose-file/#healthcheck

© www.soinside.com 2019 - 2024. All rights reserved.