Dan Anglin
2a761272a0
The shared volume will be used by each container to share their specific traefik dynamic configuration to allow Traefik to dynamically configure the backend.
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package docker
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/pulumi/pulumi-docker/sdk/v3/go/docker"
|
|
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
|
|
)
|
|
|
|
// DockerImageInput is the configuration
|
|
// used to create the local Gitea docker
|
|
// image.
|
|
type DockerImageInput struct {
|
|
BuildContext pulumi.StringInput
|
|
Dockerfile pulumi.StringInput
|
|
ImageName pulumi.StringInput
|
|
ImageTag pulumi.StringInput
|
|
UniqueLabel string
|
|
}
|
|
|
|
// DockerImageOutput contains the details
|
|
// of the generated Docker image.
|
|
type DockerImageOutput struct {
|
|
ImageName pulumi.StringOutput
|
|
}
|
|
|
|
// CreateDockerImage creates a local Docker image.
|
|
func CreateImage(ctx *pulumi.Context, c DockerImageInput) (DockerImageOutput, error) {
|
|
var output DockerImageOutput
|
|
|
|
args := docker.ImageArgs{
|
|
ImageName: pulumi.Sprintf("%s:%s", c.ImageName, c.ImageTag),
|
|
SkipPush: pulumi.Bool(true),
|
|
Build: docker.DockerBuildArgs{
|
|
Context: c.BuildContext,
|
|
Dockerfile: c.Dockerfile,
|
|
},
|
|
}
|
|
|
|
i, err := docker.NewImage(ctx, fmt.Sprintf("%s_image", c.UniqueLabel), &args)
|
|
if err != nil {
|
|
return output, fmt.Errorf("unable to create the Docker image for %s...\n%w", c.UniqueLabel, err)
|
|
}
|
|
|
|
output = DockerImageOutput{
|
|
ImageName: i.BaseImageName,
|
|
}
|
|
|
|
return output, nil
|
|
}
|