首页 > 解决方案 > 无法连接到 Docker 中的数据库主机

问题描述

我正在尝试使用环境对象连接到 mongoDB docker 实例集群,但出现以下错误,主要是它“无法找到或创建与请求规范的 MongoDB 的连接:

在此处输入图像描述

我的.env文件只包含这一行:

MONGODB=mongodb://prizmdb:27017,prizmdb:27018,prizmdb:27019/prizmserver

这是我的 Dockerfile:

version: '3.7'

volumes:
  db_data:

x-shared_environment: &shared_environment
  LOG_LEVEL: ${LOG_LEVEL:-debug}
  DATABASE_HOST: mongosetup
  DATABASE_NAME: vapor_database
  DATABASE_USERNAME: vapor_username
  DATABASE_PASSWORD: vapor_password

services:
  app:
    image: prizmserver:latest
    build:
      context: .
    environment:
      <<: *shared_environment
    volumes:
      - $PWD/.env:/app/.env
    depends_on:
      - mongosetup
    ports:
      - '8080:8080'
    # user: '0' # uncomment to run as root for testing purposes even though Dockerfile defines 'vapor' user.
    command: ["serve", "--env", "production", "--hostname", "0.0.0.0", "--port", "8080"]
  migrate:
    image: prizmserver:latest
    build:
      context: .
    environment:
      <<: *shared_environment
    depends_on:
      - mongosetup
    command: ["migrate", "--yes"]
    deploy:
      replicas: 0
  revert:
    image: prizmserver:latest
    build:
      context: .
    environment:
      <<: *shared_environment
    depends_on:
      - mongosetup
    command: ["migrate", "--revert", "--yes"]
    deploy:
      replicas: 0
  mongo-1:
    image: mongo:4.4.1
    ports:
      - "27017:27017"
    container_name: mongo-1
    hostname: mongo-1
    networks:
      - mongo_cluster
    command: mongod --replSet rs0
  mongo-2:
    image: mongo:4.4.1
    ports:
      - "27018:27018"
    container_name: mongo-2
    hostname: mongo-2
    networks:
      - mongo_cluster
    command: mongod --replSet rs0
    depends_on:
      - mongo-1
  mongo-3:
    image: mongo:4.4.1
    ports:
      - "27019:27019"
    container_name: mongo-3
    hostname: mongo-3
    networks:
      - mongo_cluster
    command: mongod --replSet rs0
    depends_on:
      - mongo-2
  mongosetup:
    image: mongo:4.4.1
    networks:
    - mongo_cluster
    volumes:
    - ./scripts:/scripts
    command: bash -c "chmod +x /scripts/setup.sh && /scripts/setup.sh"
networks:
  mongo_cluster:
    driver: bridge

我应该如何以及在哪里声明prizmdb将使用我的环境对象正确连接的别名?

标签: mongodbdockerenvironment-variables

解决方案


推荐阅读