Skip to content

Container ​

The Container resource lets you manage AWS Lightsail Containers for deploying and scaling containerized applications easily.

Minimal Example ​

Create a basic Lightsail Container with required properties and a common optional property.

ts
import AWS from "alchemy/aws/control";

const basicContainer = await AWS.Lightsail.Container("myBasicContainer", {
  ServiceName: "myService",
  Scale: 2,
  Power: "nano",
  PublicDomainNames: [{
    name: "myapp.example.com"
  }]
});

Advanced Configuration ​

Configure a container with private registry access and deployment specifications.

ts
const advancedContainer = await AWS.Lightsail.Container("myAdvancedContainer", {
  ServiceName: "myAdvancedService",
  Scale: 3,
  Power: "micro",
  PrivateRegistryAccess: {
    Credentials: {
      Username: alchemy.secret(process.env.REGISTRY_USERNAME!),
      Password: alchemy.secret(process.env.REGISTRY_PASSWORD!)
    },
    RegistryUrl: "https://my-private-registry.com"
  },
  ContainerServiceDeployment: {
    Containers: [{
      Image: "myapp/image:latest",
      Command: ["npm", "start"],
      Environment: {
        NODE_ENV: "production"
      }
    }]
  }
});

Deployment with Tags ​

Create a container with tags for better resource management and identification.

ts
const taggedContainer = await AWS.Lightsail.Container("myTaggedContainer", {
  ServiceName: "myTaggedService",
  Scale: 1,
  Power: "small",
  Tags: [
    { Key: "Environment", Value: "Production" },
    { Key: "Project", Value: "WebApp" }
  ]
});

Disabling a Container ​

Demonstrate how to create a disabled container that can be enabled later.

ts
const disabledContainer = await AWS.Lightsail.Container("myDisabledContainer", {
  ServiceName: "myDisabledService",
  Scale: 1,
  Power: "small",
  IsDisabled: true
});