compose-spec / compose-go

Reference library for parsing and loading Compose YAML files
https://compose-spec.io
Apache License 2.0
355 stars 112 forks source link
compose compose-spec containers docker docker-compose

compose-go

Continuous integration Go Reference

Go reference library for parsing and loading Compose files as specified by the Compose specification.

Usage

package main

import (
    "context"
    "fmt"
    "log"

    "github.com/compose-spec/compose-go/v2/cli"
)

func main() {
    composeFilePath := "docker-compose.yml"
    projectName := "my_project"
    ctx := context.Background()

    options, err := cli.NewProjectOptions(
        []string{composeFilePath},
        cli.WithOsEnv,
        cli.WithDotEnv,
        cli.WithName(projectName),
    )
    if err != nil {
        log.Fatal(err)
    }

    project, err := cli.ProjectFromOptions(ctx, options)
    if err != nil {
        log.Fatal(err)
    }

    // Use the MarshalYAML method to get YAML representation
    projectYAML, err := project.MarshalYAML()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(string(projectYAML))
}

Build the library

To build the library, you could either use the makefile

make build

or use the go build command

go build ./...

Run the tests

You can run the tests with the makefile

make test

or with the go test command

gotestsum ./...

Other helpful make commands

Run the linter

make lint

Check the license headers

make check_license

Check the compose-spec.json file is sync with the compose-spec repository

make check_compose_spec

Used by