Создать пользователя при запуске mongo contianer с использованием Dockerrun.aws.json на elastic beanstalk

#mongodb #amazon-web-services #docker #docker-compose #amazon-elastic-beanstalk

#mongodb #amazon-веб-сервисы #docker #docker-создать #amazon-elastic-beanstalk

Вопрос:

Я пытаюсь развернуть многоконтейнерное приложение на elastic beanstalk. Приложение состоит из трех сервисов:

  1. FastAPI
  2. Mongodb
  3. Redis

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

 version: "3"
services:
  web:
    image: pushpvashisht/web:latest
    environment:
      - MONGO_HOST=${MONGO_HOST}
      - REDIS_HOST=${REDIS_HOST}
    depends_on:
      - mongo
      - redis
    ports:
      - "8000:8000"
    volumes:
      - /mnt2/web-logs/:/web-logs/
  mongo:
    image: mongo:latest
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
      - MONGO_INITDB_DATABASE=example
    ports:
      - "27017:27017"
    volumes:
      - /mnt2/mongo_data:/data/db/
      - ./src/helper_scripts/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro
  redis:
    image: redis:latest
    ports:
      - "6379:6379"
    volumes:
      - /mnt2/redis_data:/data
  

Том (./src/helper_scripts/mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro), смонтированный для службы mongo, используется для создания пользователя для базы данных «example».

mongo-init.js:

 db.createUser(
    {
        user: "admin",
        pwd: "admin",
        roles: [
            {
                role: "readWrite",
                db: "example"
            }
        ]
    }
);
  

Как мне перевести этот файл docker-compose в файл Dockerrun.aws.json для развертывания приложения на elastic beanstalk?

Ссылаясь на документы, я написал вот что:

 {
    "AWSEBDockerrunVersion": 2,
    "containerDefinitions": [
        {
            "name": "web",
            "image": "pushpvashisht/web:latest",
            "essential": true,
            "environment": [
                {
                    "name": "MONGO_HOST",
                    "value": "${MONGO_HOST}"
                },
                {
                    "name": "REDIS_HOST",
                    "value": "${REDIS_HOST}"
                }
            ],
            "links": [
                "mongo",
                "redis"
            ],
            "portMappings": [
                {
                    "containerPort": 8000,
                    "hostPort": 8000
                }
            ],
            "mountPoints": [
                {
                    "containerPath": "/web-logs/",
                    "sourceVolume": "Mnt2Web-Logs"
                }
            ]
            "memory": 128
        },
        {
            "name": "mongo",
            "image": "mongo:latest",
            "essential": true,
            "environment": [
                {
                    "name": "MONGO_INITDB_ROOT_USERNAME",
                    "value": "${MONGO_INITDB_ROOT_USERNAME}"
                },
                {
                    "name": "MONGO_INITDB_ROOT_PASSWORD",
                    "value": "${MONGO_INITDB_ROOT_PASSWORD}"
                },
                {
                    "name": "MONGO_INITDB_DATABASE",
                    "value": "example"
                }
            ],
            "portMappings": [
                {
                    "containerPort": 27017,
                    "hostPort": 27017
                }
            ],
            "mountPoints": [
                {
                    "containerPath": "/data/db/",
                    "sourceVolume": "Mnt2Mongo_Data"
                },
                {
                    "containerPath": "/docker-entrypoint-initdb.d/mongo-init.js",
                    "sourceVolume": "_SrcHelper_ScriptsMongo-Init_Js"
                }
            ],
            "memory": 128
        },
        {
            "name": "redis",
            "image": "redis:latest",
            "essential": true,
            "portMappings": [
                {
                    "containerPort": 6379,
                    "hostPort": 6379
                }
            ],
            "mountPoints": [
                {
                    "containerPath": "/data",
                    "sourceVolume": "Mnt2Redis_Data"
                }
            ],
            "memory": 256
        }
    ],
    "volumes": [
        {
            "host": {
                "sourcePath": "/mnt2/web-logs/"
            },
            "name": "Mnt2Web-Logs"
        },
        {
            "host": {
                "sourcePath": "/mnt2/mongo_data"
            },
            "name": "Mnt2Mongo_Data"
        },
        {
            "host": {
                "sourcePath": "./src/helper_scripts/mongo-init.js"
            },
            "name": "_SrcHelper_ScriptsMongo-Init_Js"
        },
        {
            "host": {
                "sourcePath": "/mnt2/redis_data"
            },
            "name": "Mnt2Redis_Data"
        }
    ]
}