mirror of
				https://github.com/docker/compose.git
				synced 2025-11-04 13:44:48 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			182 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
   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 containers
 | 
						|
 | 
						|
import (
 | 
						|
	"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 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
 | 
						|
	Healthcheck Healthcheck
 | 
						|
}
 | 
						|
 | 
						|
// 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
 | 
						|
	AutoRemove        bool
 | 
						|
}
 | 
						|
 | 
						|
// Port represents a published port of a container
 | 
						|
type 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 container
 | 
						|
type 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 healthcheck
 | 
						|
type 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 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
 | 
						|
type LogsRequest struct {
 | 
						|
	Follow bool
 | 
						|
	Tail   string
 | 
						|
	Width  int
 | 
						|
	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 {
 | 
						|
	// 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)
 | 
						|
}
 |