compose/api/containers/api.go

153 lines
4.4 KiB
Go
Raw Normal View History

2020-06-18 16:13:24 +02:00
/*
Copyright 2020 Docker Compose CLI authors
2020-06-18 16:13:24 +02:00
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package containers
import (
"context"
2020-05-03 13:35:25 +02:00
"io"
"github.com/docker/compose-cli/formatter"
)
const (
// RestartPolicyAny Always restarts
RestartPolicyAny = "any"
// RestartPolicyNone Never restarts
RestartPolicyNone = "none"
// RestartPolicyOnFailure Restarts only on failure
RestartPolicyOnFailure = "on-failure"
)
// RestartPolicyList all available restart policy values
var RestartPolicyList = []string{RestartPolicyNone, RestartPolicyAny, RestartPolicyOnFailure}
2020-05-03 13:35:25 +02:00
// Container represents a created container
type Container struct {
ID string
Status string
Image string
Command string
CPUTime uint64
MemoryUsage uint64
PidsCurrent uint64
PidsLimit uint64
Config *RuntimeConfig `json:",omitempty"`
HostConfig *HostConfig `json:",omitempty"`
Ports []Port `json:",omitempty"`
Platform string
}
// RuntimeConfig config of a created container
type RuntimeConfig struct {
Labels []string `json:",omitempty"`
Env map[string]string `json:",omitempty"`
// FQDN is the fqdn to use
FQDN string `json:"fqdn,omitempty"`
}
// HostConfig config of the container host
type HostConfig struct {
RestartPolicy string
CPUReservation float64
CPULimit float64
MemoryReservation uint64
MemoryLimit uint64
}
2020-05-03 13:35:25 +02:00
// Port represents a published port of a container
2020-05-01 15:28:44 +02:00
type Port struct {
2020-05-14 12:17:06 +02:00
// HostPort is the port number on the host
HostPort uint32
// ContainerPort is the port number inside the container
ContainerPort uint32
// Protocol is the protocol of the port mapping
2020-05-14 12:17:06 +02:00
Protocol string
// HostIP is the host ip to use
HostIP string
2020-05-01 15:28:44 +02:00
}
2020-05-03 13:35:25 +02:00
// ContainerConfig contains the configuration data about a container
2020-05-01 15:28:44 +02:00
type ContainerConfig struct {
2020-05-03 13:35:25 +02:00
// ID uniquely identifies the container
ID string
// Image specifies the iamge reference used for a container
2020-05-01 15:28:44 +02:00
Image string
// Command are the arguments passed to the container's entrypoint
Command []string
2020-05-03 13:35:25 +02:00
// Ports provide a list of published ports
2020-05-01 15:28:44 +02:00
Ports []Port
2020-05-18 10:33:01 +02:00
// Labels set labels to the container
Labels map[string]string
// Volumes to be mounted
Volumes []string
// Memlimit
MemLimit formatter.MemBytes
// CPUlimit
CPULimit float64
// Environment variables
Environment []string
// Restart policy condition
RestartPolicyCondition string
// DomainName Container NIS domain name
DomainName string
2020-05-01 15:28:44 +02:00
}
// ExecRequest contaiens configuration about an exec request
type ExecRequest struct {
Stdin io.Reader
Stdout io.Writer
Stderr io.Writer
Command string
Interactive bool
Tty bool
}
// LogsRequest contains configuration about a log request
2020-05-04 16:38:02 +02:00
type LogsRequest struct {
Follow bool
Tail string
Width int
2020-05-04 16:38:02 +02:00
Writer io.Writer
}
// DeleteRequest contains configuration about a delete request
type DeleteRequest struct {
Force bool
}
// Service interacts with the underlying container backend
type Service interface {
2020-05-03 13:35:25 +02:00
// List returns all the containers
2020-05-16 12:13:51 +02:00
List(ctx context.Context, all bool) ([]Container, error)
2020-08-12 10:35:15 +02:00
// Start starts a stopped container
Start(ctx context.Context, containerID string) error
2020-05-16 12:13:51 +02:00
// Stop stops the running container
Stop(ctx context.Context, containerID string, timeout *uint32) error
// Kill stops the running container
Kill(ctx context.Context, containerID string, signal string) error
2020-05-03 13:35:25 +02:00
// Run creates and starts a container
Run(ctx context.Context, config ContainerConfig) error
// Exec executes a command inside a running container
Exec(ctx context.Context, containerName string, request ExecRequest) error
2020-05-03 13:41:45 +02:00
// Logs returns all the logs of a container
2020-05-04 16:38:02 +02:00
Logs(ctx context.Context, containerName string, request LogsRequest) error
// Delete removes containers
Delete(ctx context.Context, containerID string, request DeleteRequest) error
// Inspect get a specific container
Inspect(ctx context.Context, id string) (Container, error)
}