| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 | /*   Copyright 2020 Docker Compose CLI authors   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 containersimport (	"context"	"io"	"github.com/compose-spec/compose-go/types"	specs "github.com/opencontainers/image-spec/specs-go/v1"	"github.com/docker/compose-cli/utils")const (	// RestartPolicyNone Never restarts	RestartPolicyNone = "none"	// RestartPolicyAny Always restarts	RestartPolicyAny = "any"	// RestartPolicyOnFailure Restarts only on failure	RestartPolicyOnFailure = "on-failure"	// RestartPolicyRunNo Always restarts	RestartPolicyRunNo = "no"	// RestartPolicyRunAlways Always restarts	RestartPolicyRunAlways = "always")// Container represents a created containertype 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	Healthcheck Healthcheck}// RuntimeConfig config of a created containertype 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 hosttype HostConfig struct {	RestartPolicy     string	CPUReservation    float64	CPULimit          float64	MemoryReservation uint64	MemoryLimit       uint64	AutoRemove        bool}// Port represents a published port of a containertype Port struct {	// 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	Protocol string	// HostIP is the host ip to use	HostIP string}// ContainerConfig contains the configuration data about a containertype ContainerConfig struct {	// ID uniquely identifies the container	ID string	// Image specifies the image reference used for a container	Image string	// Command are the arguments passed to the container's entrypoint	Command []string	// Ports provide a list of published ports	Ports []Port	// Labels set labels to the container	Labels map[string]string	// Volumes to be mounted	Volumes []string	// Memlimit	MemLimit utils.MemBytes	// CPUlimit	CPULimit float64	// Environment variables	Environment []string	// Restart policy condition	RestartPolicyCondition string	// DomainName Container NIS domain name	DomainName string	// AutoRemove sets the container to be removed automatically when stopped	AutoRemove bool	// Healthcheck contains the command and interval of the checks	Healthcheck Healthcheck	// Platform contains the platform information	Platform *specs.Platform}// Healthcheck defines the configuration of a healthchecktype Healthcheck struct {	// Disable disables the check	Disable bool	// Test is the command to be run to check the health of the container	Test []string	// Interval is the period in between the checks	Interval types.Duration	// Retries is the number of attempts before declaring the container as healthy or unhealthy	Retries int	// StartPeriod is the start delay before starting the checks	StartPeriod types.Duration	// Timeout is the timeout in between checks	Timeout types.Duration}// ExecRequest contaiens configuration about an exec requesttype ExecRequest struct {	Stdin       io.Reader	Stdout      io.Writer	Stderr      io.Writer	Command     string	Interactive bool	Tty         bool}// LogsRequest contains configuration about a log requesttype LogsRequest struct {	Follow bool	Tail   string	Width  int	Writer io.Writer}// DeleteRequest contains configuration about a delete requesttype DeleteRequest struct {	Force bool}// Service interacts with the underlying container backendtype Service interface {	// List returns all the containers	List(ctx context.Context, all bool) ([]Container, error)	// Start starts a stopped container	Start(ctx context.Context, containerID string) error	// 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	// 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	// Logs returns all the logs of a container	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)}
 |