MongoDb в контейнере семян с несколькими коллекциями - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь кормить моего мона go, работающего в контейнере, существующими коллекциями, живущими вне контейнера.

docker -compose.yml выглядит следующим образом:

version: "3"
services:
    webapi:
      image: webapp:develop
      container_name: web_api
      build:
        args:
          buildconfig: Debug
        context: ../src/api
        dockerfile: Dockerfile
      environment:
        - ASPNETCORE_ENVIRONMENT=Development
        - ASPNETCORE_URLS=http://+:5003
      ports:
        - "5003:5003"
      depends_on:
        - mongodb
    mongodb:
      image: mongo:latest
      container_name: mongodb
      ports:
        - "27017:27017"
    mongo-seed:
      build: ./mongo-seed
      links:
        - mongodb

mon go -seed / Dockerfile:

FROM mongo

COPY initA.json /initA.json
CMD mongoimport --host mongodb --db Database --collection A --type json --file /initA.json --jsonArray --mode merge

FROM mongo

COPY initB.json /initB.json
CMD mongoimport --host mongodb --db TestListDb --collection B --type json --file /initB.json --jsonArray --mode merge

Но это не помогает, так как перезаписывает базу данных последней коллекцией, поэтому в этом случае поддерживается только коллекция 'B'.

Как я могу импортировать несколько коллекций в одну базу данных?

1 Ответ

0 голосов
/ 14 февраля 2020

Я нашел решение для этого.

Также ответ показывает, как настроить сеть, чтобы веб-приложение могло видеть контейнер mongodb.

Структура файлов:

Web.Application
.
+-- docker_compose.yml    
+-- mongo    
|   +-- dump    
|       +-- DatabaseDb    
|   +-- Dockerfile    
|   +-- restore.sh    

docker -compose.yml

version: '3.4'
services:
  webapp:
    container_name: webapp
    image: ${DOCKER_REGISTRY-}webapp
    build:
      context: ./Web.Application/
      dockerfile: Dockerfile
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    depends_on:
      - mongo
    networks:
      clusternetwork:
        ipv4_address: 1.1.0.1
  mongo:
    container_name: mongo
    build:
      context: ./Web.Application/mongo/
      dockerfile: Dockerfile
    networks:
      clusternetwork:
        ipv4_address: 1.1.0.12
networks:
  clusternetwork:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 1.1.0.0/24

. / Web.Application / mongo / Dockerfile :

FROM mongo AS start

COPY . .

COPY restore.sh /docker-entrypoint-initdb.d/

. / Web.Application / mongo / restore. sh:

#!/bin/bash
mongorestore  --db DatabaseDb ./dump/DatabaseDb
...