Я пытаюсь развернуть свое приложение на elasti c beanstalk. В настоящее время все работает локально, и это работает даже с beanstalk elasti c, но проблема в том, что существует только один контейнер docker, явно определенный и показанный как работающий в ECS. Я не уверен, как эффективно идентифицировать тег «изображение» для каждого контейнера. Код развертывается с помощью CodePipeline. Я не очень хорошо знаком с AWS и испытываю значительные трудности при расширении контейнера, чтобы показать, что каждый из контейнеров, указанных в docker -compose-prod.yaml, работает отдельно. Меня беспокоит масштабирование в текущей конфигурации, так как я понимаю, что если программа масштабируется из-за увеличения нагрузки, все контейнеры увеличиваются, даже если они не обязательно нужны. Как правильно определить файл Dockerrun. aws. json и, возможно, файл buildspe c .yml?
Dockerrun. aws. json .template:
{
"AWSEBDockerrunVersion": 2,
"containerDefinitions": [
{
"name": "web",
"image": "$REPOSITORY_URI:$IMAGE_TAG",
"essential": true,
"memory": 500,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
]
}
]
}
Docker -compose-prod.yaml:
version: '3.7'
services:
web:
build: ./app
command: gunicorn appname.wsgi:application --bind 0.0.0.0:1339
entrypoint: ./entrypoint-prod.sh
volumes:
- ./app/:/usr/src/app/
- static_volume:/usr/src/app/static
- media_volume:/usr/src/app/media
expose:
- 1339
env_file:
- ./.env.prod
depends_on:
- redis
nginx:
build: ./app/nginx
volumes:
- static_volume:/usr/src/app/static
- media_volume:/usr/src/app/media
ports:
- 8085:80
depends_on:
- web
redis:
image: redis:alpine
celery:
build: ./app
command: celery -A appname worker -l info
volumes:
- ./app/:/usr/src/app/
env_file:
- ./.env.dev
depends_on:
- redis
celery-beat:
build: ./app
command: celery -A appname beat -l info
volumes:
- ./app/:/usr/src/app/
env_file:
- ./.env.dev
depends_on:
- redis
volumes:
static_volume:
media_volume:
buildspe c .yml
version: 0.2
phases:
pre_build:
commands:
- echo Logging in to Amazon ECR....
- aws --version
- $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)
- COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
- REPOSITORY_URI=number.dkr.ecr.us-east-1.amazonaws.com/appname-production
- IMAGE_TAG=${COMMIT_HASH:=latest}
build:
commands:
- echo Build started on `date`
- echo Building the Docker image....
- cd app
- docker pull $REPOSITORY_URI:latest
- docker build -t $REPOSITORY_URI:latest .
- docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
post_build:
commands:
- docker push $REPOSITORY_URI:latest
- docker push $REPOSITORY_URI:$IMAGE_TAG
- cd ..
- envsubst < "Dockerrun.aws.json.template" > "Dockerrun.aws.json"
artifacts:
files:
- Dockerrun.aws.json