Let's suppose I have a greengrass component dependent on the docker application manager and I use docker compose for container orchestration.
---
RecipeFormatVersion: '2020-01-25'
ComponentName: io.foobar.example
ComponentVersion: '0.1.0'
ComponentDescription: foobar example
ComponentPublisher: foobar
ComponentDependencies:
aws.greengrass.DockerApplicationManager:
VersionRequirement: 2.0.11
aws.greengrass.TokenExchangeService:
VersionRequirement: 2.0.3
Manifests:
- Platform:
os: linux
Lifecycle:
startup: docker compose -f {artifacts:path}/docker-compose.yml up -d
shutdown: docker compose -f {artifacts:path}/docker-compose.yml down
Artifacts:
- URI: "docker:eclipse-mosquitto:2.0"
- URI: "docker:<ID>.dkr.ecr.<region>amazonaws.com/foobar/example-container@sha256:<SHA256>"
- URI: "s3://greengrass/components/io.foobar.example/0.1.0/artifacts/docker-compose.yml"
- URI: "s3://greengrass/components/io.foobar.example/0.1.0/artifacts/mosquitto.conf"
Will the containers be pulled from remote registries down to the core device local registry before the startup lifecycle is executed or during the startup command when docker compose up is executed?