Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change docker client to github.com/fsouza/go-dockerclient #4

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions envase.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (

"github.com/arielizuardi/envase/provider"
"github.com/arielizuardi/envase/provider/docker"
"github.com/docker/docker/client"
godocker "github.com/fsouza/go-dockerclient"
)

// ContainerContract defines container interface
Expand Down Expand Up @@ -64,7 +64,7 @@ func NewDefaultContainer(imageProvider provider.ImageProvider, containerID strin
}

// NewDockerContainer returns new instance of dockerContainer
func NewDockerContainer(ctx context.Context, dockerClient *client.Client, imageName string, host string, containerPort string, exposedPort string, containerName string, envConfig []string) ContainerContract {
func NewDockerContainer(ctx context.Context, dockerClient *godocker.Client, imageName string, host string, containerPort string, exposedPort string, containerName string, envConfig []string) ContainerContract {
imageProvider := docker.NewDockerImageProvider(ctx, dockerClient, imageName, host, containerPort, exposedPort, containerName, envConfig)
return &container{
Image: imageProvider,
Expand Down
39 changes: 18 additions & 21 deletions provider/docker/docker.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@ import (
"time"

"github.com/arielizuardi/envase/provider"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/client"
"github.com/docker/go-connections/nat"
godocker "github.com/fsouza/go-dockerclient"
)

const (
Expand All @@ -21,7 +18,7 @@ const (

type dockerImageProvider struct {
Ctx context.Context
DockerClient *client.Client
DockerClient *godocker.Client
ImageName string
Host string
ContainerPort string
Expand All @@ -32,7 +29,7 @@ type dockerImageProvider struct {
}

func (i *dockerImageProvider) Has() (bool, error) {
images, err := i.DockerClient.ImageList(i.Ctx, types.ImageListOptions{})
images, err := i.DockerClient.ListImages(g.ListImagesOptions{})
if err != nil {
return false, err
}
Expand All @@ -52,7 +49,8 @@ func (i *dockerImageProvider) Has() (bool, error) {
func (i *dockerImageProvider) Pull() error {
fmt.Printf(`>>> Pulling image [%v] ...`+"\n", i.ImageName)
imageURL := DefaultDockerLibraryURL + i.ImageName
out, err := i.DockerClient.ImagePull(i.Ctx, imageURL, types.ImagePullOptions{})
out, err := i.DockerClient.PullImage(godocker.ListImagesOptions{}, godocker.AuthConfiguration{})

if err != nil {
return err
}
Expand All @@ -67,7 +65,7 @@ func (i *dockerImageProvider) Status() (bool, bool, string, error) {
imageCreated := false
imageRunning := false

containers, err := i.DockerClient.ContainerList(i.Ctx, types.ContainerListOptions{All: true})
containers, err := i.DockerClient.ListContainers(godocker.ListContainersOptions{All: true})
if err != nil {
return imageCreated, imageRunning, i.ContainerID, err
}
Expand All @@ -93,19 +91,18 @@ func (i *dockerImageProvider) Create() (string, error) {
return ``, err
}

containerCreated, err := i.DockerClient.ContainerCreate(
i.Ctx,
&container.Config{
Image: i.ImageName,
containerCreated, err := i.DockerClient.CreateContainer(godocker.CreateContainerOptions{
Name: i.ContainerName,
Config: godocker.Config{
Image: i.ImageName,
ExposedPorts: exposedPorts,
Env: i.EnvConfig,
Env: i.EnvConfig,
},
&container.HostConfig{
PortBindings: portBindings,
HostConfig: godocker.HostConfig{
PortBindings: portBindings
},
nil,
i.ContainerName,
)
Context: i.Ctx,
})

if err != nil {
return ``, err
Expand All @@ -115,20 +112,20 @@ func (i *dockerImageProvider) Create() (string, error) {
}

func (i *dockerImageProvider) Start(containerID string) error {
return i.DockerClient.ContainerStart(i.Ctx, containerID, types.ContainerStartOptions{})
return i.DockerClient.StartContainer(containerID, godocker.HostConfig{})
}

func (i *dockerImageProvider) Stop(containerID string) error {
dur := time.Duration(30) * time.Second
if err := i.DockerClient.ContainerStop(i.Ctx, containerID, &dur); err != nil {
if err := i.DockerClient.StopContainer(containerID, dur); err != nil {
return err
}

return nil
}

// NewDockerImageProvider returns new instance of docker image provider
func NewDockerImageProvider(ctx context.Context, dockerClient *client.Client, imageName string, host string, containerPort string, exposedPort string, containerName string, envConfig []string) provider.ImageProvider {
func NewDockerImageProvider(ctx context.Context, dockerClient *godocker.Client, imageName string, host string, containerPort string, exposedPort string, containerName string, envConfig []string) provider.ImageProvider {
return &dockerImageProvider{
Ctx: ctx,
DockerClient: dockerClient,
Expand Down