Skip to content

Setup commands should run before image validation in generateDockerCompose #403

@julio4

Description

@julio4

In LocalRunner.Run(), generateDockerCompose() is called before runSetupCommands():

func (d *LocalRunner) Run(ctx context.Context) error {
go d.trackContainerStatusAndLogs()
yamlData, err := d.generateDockerCompose()
if err != nil {
return fmt.Errorf("failed to generate docker-compose.yaml: %w", err)
}
if err := d.out.WriteFile("docker-compose.yaml", yamlData); err != nil {
return fmt.Errorf("failed to write docker-compose.yaml: %w", err)
}
// Run setup commands before launching any services
if err := d.runSetupCommands(ctx); err != nil {
return err
}

generateDockerCompose calls validateImageExists for every Docker service, which fails if the image is locally-built in a setup command as the image doesn't exist yet because setup hasn't run.

Example: A recipe that builds a local image in setup and references it as a service:

  setup:
    - docker build -t my-service:dev .

  recipe:
    my-app:
      services:
        my-service:
          image: my-service
          tag: dev

Possible fix: Run setup commands before generating docker-compose, or skip validation for images that are built in setup.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions