package main
import (
"context"
"dagger.io/dagger"
)
func main() {
ctx := context.Background()
client, err := dagger.Connect(ctx)
if err != nil {
panic(err)
}
defer client.Close()
// Собираем Docker-образ
image := client.Container().Build(client.Host().Directory("."))
// Пушим в registry
_, err = image.Publish(ctx, "my-registry/my-app:latest")
if err != nil {
panic(err)
}
}
Из минусов, кода становится больше:
#!/bin/bash
echo "Building app..."
docker build -t my-app .
echo "Pushing to registry..."
docker tag my-app my-registry/my-app:latest
docker push my-registry/my-app:latest
Но на больших и сложных кейсах приемущество становиться очевидным.
#DevOps #CI_CD #Dagger #Automation #GoLang