mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.8 KiB
3.8 KiB
title | description | tags | keywords |
---|---|---|---|
AWS ECS (Fargate) | AWS ECS (Fargate) Installation | [Open Source] | [NocoDB installation NocoDB AWS Fargate installation NocoDB prerequisites] |
Deploying NocoDB on AWS ECS (Fargate)
This guide will walk you through deploying NocoDB on Amazon ECS using Fargate.
Prerequisites
- AWS CLI configured with appropriate permissions
- Basic understanding of AWS ECS and Fargate
Deployment Steps
-
Create ECS Cluster
aws ecs create-cluster --cluster-name <YOUR_ECS_CLUSTER>
-
Create a Log Group:
```bash aws logs create-log-group --log-group-name /ecs/<YOUR_APP_NAME>/<YOUR_CONTAINER_NAME> ```
-
Create an ECS Task Definition:
Every time you create it, it will add a new version. If it is not existing, the version will be 1.
aws ecs register-task-definition --cli-input-json file://task-definition.json
:::tip This json file defines the container specification. You can define secrets such as NC_DB and environment variables here. :::
Example
task-definition.json
:{ "family": "nocodb-sample-task-def", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "<YOUR_CONTAINER_NAME>", "image": "nocodb/nocodb:latest", "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/<YOUR_APP_NAME>/<YOUR_CONTAINER_NAME>", "awslogs-region": "<YOUR_AWS_REGION>", "awslogs-stream-prefix": "ecs" } }, "secrets": [ { "name": "<YOUR_SECRETS_NAME>", "valueFrom": "<YOUR_SECRET_ARN>" } ], "environment": [ { "name": "<YOUR_ENV_VARIABLE_NAME>", "value": "<YOUR_ENV_VARIABLE_VALUE>" } ], "portMappings": [ { "containerPort": 8080, "hostPort": 8080, "protocol": "tcp" } ] } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "256", "memory": "512", "executionRoleArn": "<YOUR_ECS_EXECUTION_ROLE_ARN>", "taskRoleArn": "<YOUR_ECS_TASK_ROLE_ARN>" }
-
Create an ECS Service:
```bash aws ecs create-service \ --cluster <YOUR_ECS_CLUSTER> \ --service-name <YOUR_SERVICE_NAME> \ --task-definition <YOUR_TASK_DEF>:<YOUR_TASK_DEF_VERSION> \ --desired-count <DESIRED_COUNT> \ --launch-type "FARGATE" \ --platform-version <VERSION> \ --health-check-grace-period-seconds <GRACE_PERIOD_IN_SECOND> \ --network-configuration "awsvpcConfiguration={subnets=["<YOUR_SUBSETS>"], securityGroups=["<YOUR_SECURITY_GROUPS>"], assignPublicIp=ENABLED}" \ --load-balancer targetGroupArn=<TARGET_GROUP_ARN>,containerName=<CONTAINER_NAME>,containerPort=<YOUR_CONTAINER_PORT> ```
:::tip If your service fails to start, you may check the logs in ECS console or in Cloudwatch. Generally it fails due to the connection between ECS container and NC_DB. Make sure the security groups have the correct inbound and outbound rules. :::
Important Notes
- Ensure that your security groups have the correct inbound and outbound rules.
- The NC_DB environment variable should be properly set to connect to your database.
- Monitor the ECS console and CloudWatch logs for any deployment issues.
- You can customize the task definition and service configuration based on your requirements.