如何让 mongo-express 在 docker-compose 中等待 mongo

dsm*_*url 5 mongodb docker docker-compose

我正在使用 healthcheck/mongo 并让 mongo-express 在那里等待 service_healthy 。为什么它不等待并且浏览器中 localhost:8081 的结果是 404?:(

#Docker Engine: 18.06.1-ce
#docker-compose: 1.22.0, build f46880f

version: '2.1'

services:
  mongodb:
    image: healthcheck/mongo:latest
    restart: always
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=rootpass
    ports:
     - "27017:27017"
    volumes:
     - "./mongo/data:/data/db"

  mongo-express:
    image: mongo-express
    restart: always
    depends_on:
      mongodb:
        condition: service_healthy
    ports:
      - "8081:8081"
    environment:
      - ME_CONFIG_MONGODB_ADMINUSERNAME=root
      - ME_CONFIG_MONGODB_ADMINPASSWORD=rootpass
Run Code Online (Sandbox Code Playgroud)

Ale*_*ovs 0

作为

这是给其他可能登陆此页面的人的示例。

    healthcheck:
      << : *healthcheck_defaults
      test: ['CMD-SHELL', 'mongosh --eval "db.adminCommand(\"ping\")" mongodb://${MONGODB_USERNAME}:${MONGODB_PASSWORD}@mongo:27017/${MONGODB_DATABASE}?replicaSet=rs0' ]
Run Code Online (Sandbox Code Playgroud)

完整的yaml:

services:
  ######################## MONGO ########################
  mongo:
    << : *service_defaults
    # https://hub.docker.com/r/bitnami/mongodb
    image: ${MONGO_IMAGE}
    ports: ["27017:27017"]
    hostname: mongo-rs0
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - mongo-data:/bitnami/mongodb
      - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js
    environment:
      # Create on first run
      MONGODB_DATABASE: ${MONGODB_DATABASE}
      MONGODB_USERNAME: ${MONGODB_USERNAME}
      MONGODB_PASSWORD: ${MONGODB_PASSWORD}
      MONGO_INITDB_DATABASE: ${MONGODB_DATABASE} # use for /docker-entrypoint-initdb.d
      MONGODB_ROOT_PASSWORD: ${MONGODB_ROOT_PASSWORD}
      MONGODB_REPLICA_SET_MODE: primary
      MONGODB_REPLICA_SET_NAME: rs0
      MONGODB_REPLICA_SET_KEY: replicaKey123
      MONGODB_EXTRA_FLAGS: '--setParameter maxSessions=1000'
      MONGODB_SYSTEM_LOG_VERBOSITY: 0 # https://hub.docker.com/r/bitnami/mongodb
    healthcheck:
      << : *healthcheck_defaults
      test: ['CMD-SHELL', 'mongosh --eval "db.adminCommand(\"ping\")" mongodb://${MONGODB_USERNAME}:${MONGODB_PASSWORD}@mongo:27017/${MONGODB_DATABASE}?replicaSet=rs0' ]

  mongo-backup:
    << : *service_defaults
    profiles: ['backup']
    image: ${DBBACKUP_IMAGE}
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./mongo-backup:/backup
    environment:
      DB_TYPE: mongo
      DB_HOST: mongo
      DB_AUTH: ${MONGODB_DATABASE}
      DB_NAME: ${MONGODB_DATABASE}
      DB_USER: ${MONGODB_USERNAME}
      DB_PASS: ${MONGODB_PASSWORD}
      << : *backup_defaults
    depends_on: { mongo: { condition: service_healthy }}

  mongo-express:
    << : *service_defaults
    profiles: ['ui']
    image: ${MONGOEXPRESS_IMAGE}
    ports: ["9081:8081"]
    environment:
      # https://github.com/mongo-express/mongo-express
      - ME_CONFIG_SITE_BASEURL=/mongo-express
      - ME_CONFIG_MONGODB_ENABLE_ADMIN=false
      - ME_CONFIG_MONGODB_URL=mongodb://${MONGODB_USERNAME}:${MONGODB_PASSWORD}@mongo:27017/${MONGODB_DATABASE}?replicaSet=rs0
    depends_on: { mongo: { condition: service_healthy }}

Run Code Online (Sandbox Code Playgroud)