{
    "family": "shipme-task",
    "containerDefinitions": [
        {
            "name": "frontend",
            "image": "[AWS_ACCOUNT_ID].dkr.ecr.us-east-1.amazonaws.com/shipme/frontend:latest",
            "cpu": 0,
            "memory": 1024,
            "memoryReservation": 512,
            "links": ["backend"],
            "portMappings": [
                {
                    "name": "frontend-5173-tcp",
                    "containerPort": 5173,
                    "hostPort": 5173,
                    "protocol": "tcp",
                    "appProtocol": "http"
                }
            ],
            "essential": true,
            "environment": [
                {
                    "name": "VITE_MSAL_CLIENT_ID",
                    "value": "[MSAL_CLIENT_ID]"
                },
                {
                    "name": "VITE_APP_URL",
                    "value": "shipmeapp.com"
                },
                {
                    "name": "VITE_API_URL",
                    "value": "http://backend:3000"
                },
                {
                    "name": "VITE_MSAL_AUTHORITY_URL",
                    "value": "https://login.microsoftonline.com/0c9bf8f6-ccad-4b87-818d-49026938aa97"
                }
            ],
            "mountPoints": [
                {
                    "sourceVolume": "frontend_modules",
                    "containerPath": "/app/node_modules",
                    "readOnly": false
                }
            ],
            "volumesFrom": [],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "/ecs/shipme-task",
                    "mode": "non-blocking",
                    "awslogs-create-group": "true",
                    "max-buffer-size": "25m",
                    "awslogs-region": "us-east-1",
                    "awslogs-stream-prefix": "ecs"
                },
                "secretOptions": []
            },
            "healthCheck": {
                "command": [
                    "CMD-SHELL",
                    "netstat -tuln | grep -q ':5173.*LISTEN' || exit 1"
                ],
                "interval": 30,
                "timeout": 5,
                "retries": 3,
                "startPeriod": 15
            },
            "systemControls": []
        },
        {
            "name": "backend",
            "image": "[AWS_ACCOUNT_ID].dkr.ecr.us-east-1.amazonaws.com/shipme/backend:latest",
            "cpu": 0,
            "memory": 1024,
            "memoryReservation": 512,
            "links": ["db"],
            "portMappings": [
                {
                    "name": "backend-3000-tcp",
                    "containerPort": 3000,
                    "hostPort": 3000,
                    "protocol": "tcp",
                    "appProtocol": "http"
                }
            ],
            "essential": true,
            "environment": [
                {
                    "name": "POSTGRES_USER",
                    "value": "shipme"
                },
                {
                    "name": "AWS_REGION",
                    "value": "us-east-1"
                },
                {
                    "name": "SMTP_PORT",
                    "value": "587"
                },
                {
                    "name": "POSTGRES_HOST",
                    "value": "db"
                },
                {
                    "name": "IAM_USER",
                    "value": "shipme-smtp-user"
                },
                {
                    "name": "SMTP_USER",
                    "value": "[SES_SMTP_USERNAME]"
                },
                {
                    "name": "SMTP_PASSWORD",
                    "value": "[SES_SMTP_PASSWORD]"
                },
                {
                    "name": "POSTGRES_PASSWORD",
                    "value": "[DATABASE_PASSWORD]"
                },
                {
                    "name": "POSTGRES_PORT",
                    "value": "5432"
                },
                {
                    "name": "POSTGRES_DB",
                    "value": "shipme"
                },
                {
                    "name": "VITE_APP_URL",
                    "value": "shipmeapp.com"
                }
            ],
            "mountPoints": [
                {
                    "sourceVolume": "backend_modules",
                    "containerPath": "/app/node_modules",
                    "readOnly": false
                }
            ],
            "volumesFrom": [],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "/ecs/shipme-task",
                    "mode": "non-blocking",
                    "awslogs-create-group": "true",
                    "max-buffer-size": "25m",
                    "awslogs-region": "us-east-1",
                    "awslogs-stream-prefix": "ecs"
                },
                "secretOptions": []
            },
            "healthCheck": {
                "command": ["CMD-SHELL", "nc -z localhost 3000 || exit 1"],
                "interval": 30,
                "timeout": 5,
                "retries": 3,
                "startPeriod": 15
            },
            "systemControls": []
        },
        {
            "name": "db",
            "image": "[AWS_ACCOUNT_ID].dkr.ecr.us-east-1.amazonaws.com/shipme/db:latest",
            "cpu": 0,
            "memory": 2048,
            "memoryReservation": 1024,
            "portMappings": [
                {
                    "name": "db-5432-tcp",
                    "containerPort": 5432,
                    "hostPort": 5432,
                    "protocol": "tcp"
                }
            ],
            "essential": true,
            "entryPoint": ["sh", "-c"],
            "command": [
                "mkdir -p /docker-entrypoint-initdb.d && cp *.sql /docker-entrypoint-initdb.d/ && docker-entrypoint.sh postgres"
            ],
            "environment": [
                {
                    "name": "POSTGRES_USER",
                    "value": "shipme"
                },
                {
                    "name": "POSTGRES_PASSWORD",
                    "value": "[DATABASE_PASSWORD]"
                },
                {
                    "name": "POSTGRES_DB",
                    "value": "shipme"
                }
            ],
            "mountPoints": [
                {
                    "sourceVolume": "postgres_data",
                    "containerPath": "/var/lib/postgresql/data",
                    "readOnly": false
                }
            ],
            "volumesFrom": [],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "/ecs/shipme-task",
                    "mode": "non-blocking",
                    "awslogs-create-group": "true",
                    "max-buffer-size": "25m",
                    "awslogs-region": "us-east-1",
                    "awslogs-stream-prefix": "ecs"
                },
                "secretOptions": []
            },
            "healthCheck": {
                "command": [
                    "CMD-SHELL",
                    "pg_isready -U $POSTGRES_USER -d $POSTGRES_DB || exit 1"
                ],
                "interval": 30,
                "timeout": 5,
                "retries": 3,
                "startPeriod": 15
            },
            "systemControls": []
        }
    ],
    "executionRoleArn": "arn:aws:iam::[AWS_ACCOUNT_ID]:role/ecsTaskExecutionRole",
    "networkMode": "bridge",
    "volumes": [
        {
            "name": "frontend_modules",
            "host": {}
        },
        {
            "name": "backend_modules",
            "host": {}
        },
        {
            "name": "postgres_data",
            "efsVolumeConfiguration": {
                "fileSystemId": "[FILE_SYSTEM_ID]",
                "rootDirectory": "/",
                "transitEncryption": "ENABLED"
            }
        }
    ],
    "placementConstraints": [],
    "requiresCompatibilities": ["EC2"],
    "cpu": "1024",
    "memory": "3072",
    "runtimePlatform": {
        "cpuArchitecture": "ARM64",
        "operatingSystemFamily": "LINUX"
    },
    "enableFaultInjection": false
}
