Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Prev Previous commit
Fix docker client usage
  • Loading branch information
lucaslorentz committed Jun 22, 2025
commit 279d925d2abbe19a04ec945afcd98244cd28a03b
13 changes: 7 additions & 6 deletions docker/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/events"
"github.com/docker/docker/api/types/network"
"github.com/docker/docker/api/types/swarm"
"github.com/docker/docker/api/types/system"
"github.com/docker/docker/client"
Expand All @@ -18,11 +19,11 @@ type Client interface {
TaskList(ctx context.Context, options types.TaskListOptions) ([]swarm.Task, error)
Info(ctx context.Context) (system.Info, error)
ContainerInspect(ctx context.Context, containerID string) (types.ContainerJSON, error)
NetworkInspect(ctx context.Context, networkID string, options types.NetworkInspectOptions) (types.NetworkResource, error)
NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error)
NetworkInspect(ctx context.Context, networkID string, options network.InspectOptions) (network.Inspect, error)
NetworkList(ctx context.Context, options network.ListOptions) ([]network.Summary, error)
ConfigList(ctx context.Context, options types.ConfigListOptions) ([]swarm.Config, error)
ConfigInspectWithRaw(ctx context.Context, id string) (swarm.Config, []byte, error)
Events(ctx context.Context, options types.EventsOptions) (<-chan events.Message, <-chan error)
Events(ctx context.Context, options events.ListOptions) (<-chan events.Message, <-chan error)
}

// WrapClient creates a new docker client wrapper
Expand Down Expand Up @@ -60,18 +61,18 @@ func (wrapper *clientWrapper) ContainerInspect(ctx context.Context, containerID
return wrapper.client.ContainerInspect(ctx, containerID)
}

func (wrapper *clientWrapper) NetworkInspect(ctx context.Context, networkID string, options types.NetworkInspectOptions) (types.NetworkResource, error) {
func (wrapper *clientWrapper) NetworkInspect(ctx context.Context, networkID string, options network.InspectOptions) (network.Inspect, error) {
return wrapper.client.NetworkInspect(ctx, networkID, options)
}

func (wrapper *clientWrapper) NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error) {
func (wrapper *clientWrapper) NetworkList(ctx context.Context, options network.ListOptions) ([]network.Summary, error) {
return wrapper.client.NetworkList(ctx, options)
}

func (wrapper *clientWrapper) ConfigInspectWithRaw(ctx context.Context, id string) (swarm.Config, []byte, error) {
return wrapper.client.ConfigInspectWithRaw(ctx, id)
}

func (wrapper *clientWrapper) Events(ctx context.Context, options types.EventsOptions) (<-chan events.Message, <-chan error) {
func (wrapper *clientWrapper) Events(ctx context.Context, options events.ListOptions) (<-chan events.Message, <-chan error) {
return wrapper.client.Events(ctx, options)
}
11 changes: 6 additions & 5 deletions docker/client_mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/events"
"github.com/docker/docker/api/types/network"
"github.com/docker/docker/api/types/swarm"
"github.com/docker/docker/api/types/system"
)
Expand All @@ -16,10 +17,10 @@ type ClientMock struct {
ServicesData []swarm.Service
ConfigsData []swarm.Config
TasksData []swarm.Task
NetworksData []types.NetworkResource
NetworksData []network.Summary
InfoData system.Info
ContainerInspectData map[string]types.ContainerJSON
NetworkInspectData map[string]types.NetworkResource
NetworkInspectData map[string]network.Inspect
EventsChannel chan events.Message
ErrorsChannel chan error
}
Expand Down Expand Up @@ -55,7 +56,7 @@ func (mock *ClientMock) ConfigList(ctx context.Context, options types.ConfigList
}

// NetworkList list all networks
func (mock *ClientMock) NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error) {
func (mock *ClientMock) NetworkList(ctx context.Context, options network.ListOptions) ([]network.Summary, error) {
return mock.NetworksData, nil
}

Expand All @@ -70,7 +71,7 @@ func (mock *ClientMock) ContainerInspect(ctx context.Context, containerID string
}

// NetworkInspect returns information about a specific network
func (mock *ClientMock) NetworkInspect(ctx context.Context, networkID string, options types.NetworkInspectOptions) (types.NetworkResource, error) {
func (mock *ClientMock) NetworkInspect(ctx context.Context, networkID string, options network.InspectOptions) (network.Inspect, error) {
return mock.NetworkInspectData[networkID], nil
}

Expand All @@ -85,6 +86,6 @@ func (mock *ClientMock) ConfigInspectWithRaw(ctx context.Context, id string) (sw
}

// Events listen for events in docker
func (mock *ClientMock) Events(ctx context.Context, options types.EventsOptions) (<-chan events.Message, <-chan error) {
func (mock *ClientMock) Events(ctx context.Context, options events.ListOptions) (<-chan events.Message, <-chan error) {
return mock.EventsChannel, mock.ErrorsChannel
}
4 changes: 2 additions & 2 deletions generator/containers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ func TestContainers_DifferentNetwork(t *testing.T) {

func TestContainers_ManualIngressNetworks(t *testing.T) {
dockerClient := createBasicDockerClientMock()
dockerClient.NetworksData = []types.NetworkResource{
dockerClient.NetworksData = []network.Summary{
{
ID: "other-network-id",
Name: "other-network-name",
Expand Down Expand Up @@ -140,7 +140,7 @@ func TestContainers_ManualIngressNetworks(t *testing.T) {

func TestContainers_OverrideIngressNetworks(t *testing.T) {
dockerClient := createBasicDockerClientMock()
dockerClient.NetworksData = []types.NetworkResource{
dockerClient.NetworksData = []network.Summary{
{
ID: "other-network-id",
Name: "other-network-name",
Expand Down
7 changes: 4 additions & 3 deletions generator/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (

"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/api/types/network"
"github.com/docker/docker/api/types/swarm"
"github.com/lucaslorentz/caddy-docker-proxy/v2/caddyfile"
"github.com/lucaslorentz/caddy-docker-proxy/v2/config"
Expand Down Expand Up @@ -236,7 +237,7 @@ func (g *CaddyfileGenerator) getIngressNetworks(logger *zap.Logger) (map[string]

for _, dockerClient := range g.dockerClients {
if len(g.options.IngressNetworks) > 0 {
networks, err := dockerClient.NetworkList(context.Background(), types.NetworkListOptions{})
networks, err := dockerClient.NetworkList(context.Background(), network.ListOptions{})
if err != nil {
return nil, err
}
Expand All @@ -262,8 +263,8 @@ func (g *CaddyfileGenerator) getIngressNetworks(logger *zap.Logger) (map[string]
return nil, err
}

for _, network := range container.NetworkSettings.Networks {
networkInfo, err := dockerClient.NetworkInspect(context.Background(), network.NetworkID, types.NetworkInspectOptions{})
for _, networkEndpoint := range container.NetworkSettings.Networks {
networkInfo, err := dockerClient.NetworkInspect(context.Background(), networkEndpoint.NetworkID, network.InspectOptions{})
if err != nil {
return nil, err
}
Expand Down
4 changes: 2 additions & 2 deletions generator/generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ func createBasicDockerClientMock() *docker.ClientMock {
ServicesData: []swarm.Service{},
ConfigsData: []swarm.Config{},
TasksData: []swarm.Task{},
NetworksData: []types.NetworkResource{},
NetworksData: []network.Summary{},
InfoData: system.Info{
Swarm: swarm.Info{
LocalNodeState: swarm.LocalNodeStateActive,
Expand All @@ -182,7 +182,7 @@ func createBasicDockerClientMock() *docker.ClientMock {
},
},
},
NetworkInspectData: map[string]types.NetworkResource{
NetworkInspectData: map[string]network.Summary{
caddyNetworkID: {
Ingress: false,
ID: caddyNetworkID,
Expand Down
8 changes: 4 additions & 4 deletions generator/services_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package generator
import (
"testing"

"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/network"
"github.com/docker/docker/api/types/swarm"
"github.com/docker/docker/api/types/system"
"github.com/lucaslorentz/caddy-docker-proxy/v2/config"
Expand Down Expand Up @@ -100,7 +100,7 @@ func TestServices_DifferentNetwork(t *testing.T) {

func TestServices_ManualIngressNetwork(t *testing.T) {
dockerClient := createBasicDockerClientMock()
dockerClient.NetworksData = []types.NetworkResource{
dockerClient.NetworksData = []network.Summary{
{
ID: "other-network-id",
Name: "other-network-name",
Expand Down Expand Up @@ -349,7 +349,7 @@ func TestServiceTasks_ManualIngressNetwork(t *testing.T) {
},
},
}
dockerClient.NetworksData = []types.NetworkResource{
dockerClient.NetworksData = []network.Summary{
{
ID: "other-network-id",
Name: "other-network-name",
Expand Down Expand Up @@ -407,7 +407,7 @@ func TestServiceTasks_OverrideIngressNetwork(t *testing.T) {
},
},
}
dockerClient.NetworksData = []types.NetworkResource{
dockerClient.NetworksData = []network.Summary{
{
ID: "other-network-id",
Name: "other-network-name",
Expand Down
4 changes: 2 additions & 2 deletions loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (

"github.com/caddyserver/caddy/v2"
"github.com/caddyserver/caddy/v2/caddyconfig"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/events"
"github.com/docker/docker/api/types/filters"
"github.com/docker/docker/client"
"github.com/joho/godotenv"
Expand Down Expand Up @@ -193,7 +193,7 @@ func (dockerLoader *DockerLoader) listenEvents() {
for i, dockerClient := range dockerLoader.dockerClients {
context, cancel := context.WithCancel(context.Background())

eventsChan, errorChan := dockerClient.Events(context, types.EventsOptions{
eventsChan, errorChan := dockerClient.Events(context, events.ListOptions{
Filters: args,
})

Expand Down
Loading