Web Analytics

Run Syncloop on docker

Overview

Using docker, developers can run the Syncloop API platform on a docker container.

Prerequisites

To run Syncloop on docker, you must meet following requirements:

  • Docker CLI should be installed on the machine. Follow this link to setup docker.
  • Docker image will be pulled from docker centralized repository. Ensure you have outbound network allowance with the docker repository.

Docker Images

Syncloop is available in nature9/syncloop & nature9/syncloop-community versions.

Run on Docker CLI

To run Syncloop use the following command

docker run -d -p 8080:8080 nature9/syncloop

Use nature9/syncloop-community for community version image

Run Docker Compose

You can deploy and manage multi-container applications defined in the ompose file. Create a file called docker-compose.yaml and add following content:

version: '2.1'
    services:
      syncloop:
        image: nature9/syncloop
        environment:
          - LOGGING_FILE=/logs/server.log
        ports:
          - "8080:8080"
        volumes:
          - eka_vol:/eka

    volumes:
      eka_vol:
Download file

Environmental variables:

LOGGING_FILE: Full path of server.log file for logging.

Use the following command to run docker.

docker compose up

If you see the following it means Syncloop is successfully running on docker now open the URL in browser.

http://localhost:8080

Run on AWS ECS

Developers can also deploy a docker container to aws ecs service from their local command tool. To do this read more in detail how docker offers integration with AWS ECS.

To run Syncloop on AWS ECS follow these easy steps:

ECS Architecture Diagram

  • Create an IAM user with following permissions
    • ec2:AuthorizeSecurityGroupIngress
    • application-autoscaling:*
    • elasticfilesystem:*
    • route53:GetHostedZone
    • logs:*
    • route53:GetHealthCheck
    • iam:CreateRole
    • iam:AttachRolePolicy
    • iam:PutRolePolicy
    • route53:ListHostedZonesByName
    • ecs:DeregisterTaskDefinition
    • servicediscovery:*
    • ecs:UpdateService
    • iam:GetRole
    • iam:PassRole
    • ecs:CreateService
    • iam:DetachRolePolicy
    • ec2:CreateSecurityGroup
    • ecs:ListTasks
    • iam:DeleteRolePolicy
    • ecs:RegisterTaskDefinition
    • ecs:DescribeServices
    • route53:DeleteHostedZone
    • logs:FilterLogEvents
    • ec2:DescribeRouteTables
    • ecs:DescribeTasks
    • route53:CreateHostedZone
    • logs:DescribeLogGroups
    • logs:DeleteLogGroup
    • ec2:CreateTags
    • ecs:CreateCluster
    • ecs:DeleteService
    • ecs:DeleteCluster
    • cloudformation:*
    • iam:DeleteRole
    • elasticloadbalancing:*
    • logs:CreateLogGroup
    • ec2:DescribeSecurityGroups
    • ecs:DescribeClusters
    • ec2:RevokeSecurityGroupIngress
    • ecs:ListAccountSettings
    • ec2:DescribeVpcs
    • ec2:DeleteSecurityGroup
    • ec2:DescribeSubnets
  • Create aws ecs context by using command
    docker context create ecs Syncloop-platform
  • Select the created context
    version: '2.1'
        services:
          syncloop:
            image: nature9/syncloop
            environment:
              - LOGGING_FILE=/logs/server.log
            ports:
              - "8080:8080"
            deploy:
              resources:
                limits:
                  cpus: '0.5'
                  memory: 1024M
              x-aws-autoscaling:
                min: 1
                max: 10 #required
                cpu: 75
    
            volumes:
              - eka_vol:/eka
    
        volumes:
          eka_vol:
        #    external: true
        #    name: fs-0d1781ddc5d739570
    
        x-aws-cloudformation:
          Resources:
            SyncloopTCP80TargetGroup:
              Properties:
                HealthCheckPath: /tenant/default/files/gui/middleware/pub/server/ui/welcome/onboarding/login.html
                Matcher:
                  HttpCode: 200-499
            SyncloopTCP80Listener:
              Properties:
                Certificates:
                  - CertificateArn: "arn:aws:acm:ap-south-1:776625503031:certificate/7a2b32cd-e894-4afd-b212-26f91ad31ce9"
                Protocol: HTTPS
                Port: 443
            Default80Ingress:
              Properties:
                FromPort: 443
                ToPort: 443
    Download file
  • Deploy docker compose on ecs cluster.
    docker compose up
  • When the above command is successful. Go to aws ec2 load balancer.
  • Select the newly created aws elb and option the DNS name in the browser.
  • Syncloop will support both http & https. Read the docker ecs document to use your SSL certificate.