#mongodb #amazon-web-services #docker #docker-compose #amazon-elastic-beanstalk
#mongodb #amazon-веб-сервисы #docker #docker-создать #amazon-elastic-beanstalk
Вопрос:
Я пытаюсь развернуть многоконтейнерное приложение на elastic beanstalk. Приложение состоит из трех сервисов:
- FastAPI
- Mongodb
- 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"
}
]
}