Documentation ¶
Index ¶
- Constants
- Variables
- func CheckAvailableSpace()
- func CheckDockerCompose() error
- func CheckDockerVersion(versionConstraint string) error
- func CheckForHTTPS(container docker.APIContainers) bool
- func ComposeCmd(composeFiles []string, action ...string) (string, string, error)
- func ComposeWithStreams(composeFiles []string, stdin io.Reader, stdout io.Writer, stderr io.Writer, ...) error
- func ContainerName(container docker.APIContainers) string
- func ContainerWait(waittime int, labels map[string]string) (string, error)
- func ContainerWaitLog(waittime int, labels map[string]string, expectedLog string) (string, error)
- func ContainersWait(waittime int, labels map[string]string) error
- func CopyFromContainer(containerName string, containerPath string, hostPath string) error
- func CopyIntoContainer(srcPath string, containerName string, dstPath string, exclusion string) error
- func CopyIntoVolume(sourcePath string, volumeName string, targetSubdir string, uid string, ...) error
- func CreateVolume(volumeName string, driver string, driverOpts map[string]string, ...) (volume *docker.Volume, err error)
- func DownloadDockerCompose() error
- func DownloadDockerComposeIfNeeded() (bool, error)
- func EnsureDdevNetwork()
- func EnsureNetwork(client *docker.Client, name string) error
- func Exec(containerID string, command string, uid string) (string, string, error)
- func FindContainerByLabels(labels map[string]string) (*docker.APIContainers, error)
- func FindContainerByName(name string) (*docker.APIContainers, error)
- func FindContainersByLabels(labels map[string]string) ([]docker.APIContainers, error)
- func FindContainersWithLabel(label string) ([]docker.APIContainers, error)
- func GetAppContainers(sitename string) ([]docker.APIContainers, error)
- func GetContainerEnv(key string, container docker.APIContainers) string
- func GetContainerHealth(container *docker.APIContainers) (string, string)
- func GetContainerStateByName(name string) (string, error)
- func GetDockerClient() *docker.Client
- func GetDockerComposeVersion() (string, error)
- func GetDockerContainers(allContainers bool) ([]docker.APIContainers, error)
- func GetDockerContext() (string, string, error)
- func GetDockerHostID() string
- func GetDockerIP() (string, error)
- func GetDockerVersion() (string, error)
- func GetExposedContainerPorts(containerID string) ([]string, error)
- func GetHostDockerInternalIP() (string, error)
- func GetLiveDockerComposeVersion() (string, error)
- func GetNFSServerAddr() (string, error)
- func GetPublishedPort(privatePort int64, container docker.APIContainers) int
- func ImageExistsLocally(imageName string) (bool, error)
- func InspectContainer(name string) (*docker.Container, error)
- func IsColima() bool
- func IsDockerDesktop() bool
- func IsWSL2() bool
- func MassageWindowsHostMountpoint(mountPoint string) string
- func MassageWindowsNFSMount(mountPoint string) string
- func NetExists(client *docker.Client, name string) bool
- func NetworkExists(netName string) bool
- func Pull(imageName string) error
- func RemoveContainer(id string, timeout uint) error
- func RemoveContainersByLabels(labels map[string]string) error
- func RemoveImage(tag string) error
- func RemoveNetwork(netName string) error
- func RemoveVolume(volumeName string) error
- func RestartContainer(id string, timeout uint) error
- func RunSimpleContainer(image string, name string, cmd []string, entrypoint []string, env []string, ...) (containerID string, output string, returnErr error)
- func VolumeExists(volumeName string) bool
- func VolumeLabels(volumeName string) (map[string]string, error)
Constants ¶
const NetName = "ddev_default"
NetName provides the default network name for ddev.
Variables ¶
var DockerComposeVersionConstraint = ">= 2.5.1"
DockerComposeVersionConstraint is the versions allowed for ddev REMEMBER TO CHANGE docs/ddev-installation.md if you touch this! The constraint MUST HAVE a -pre of some kind on it for successful comparison. See https://github.com/ddev/ddev/pull/738.. and regression https://github.com/ddev/ddev/issues/1431
var DockerContext string
var DockerHost string
var DockerIP string
var DockerVersion = ""
DockerVersion is cached version of docker
var DockerVersionConstraint = ">= 20.10.0-alpha1"
DockerVersionConstraint is the current minimum version of docker required for ddev. See https://godoc.org/github.com/Masterminds/semver#hdr-Checking_Version_Constraints for examples defining version constraints. REMEMBER TO CHANGE docs/ddev-installation.md if you touch this! The constraint MUST HAVE a -pre of some kind on it for successful comparison. See https://github.com/ddev/ddev/pull/738.. and regression https://github.com/ddev/ddev/issues/1431
Functions ¶
func CheckAvailableSpace ¶ added in v1.21.5
func CheckAvailableSpace()
CheckAvailableSpace outputs a warning if docker space is low
func CheckDockerCompose ¶ added in v0.11.0
func CheckDockerCompose() error
CheckDockerCompose determines if docker-compose is present and executable on the host system. This relies on docker-compose being somewhere in the user's $PATH.
func CheckDockerVersion ¶
CheckDockerVersion determines if the docker version of the host system meets the provided version constraints. See https://godoc.org/github.com/Masterminds/semver#hdr-Checking_Version_Constraints for examples defining version constraints.
func CheckForHTTPS ¶ added in v0.9.4
func CheckForHTTPS(container docker.APIContainers) bool
CheckForHTTPS determines if a container has the HTTPS_EXPOSE var set to route 443 traffic to 80
func ComposeCmd ¶
ComposeCmd executes docker-compose commands via shell. returns stdout, stderr, error/nil
func ComposeWithStreams ¶ added in v1.4.0
func ComposeWithStreams(composeFiles []string, stdin io.Reader, stdout io.Writer, stderr io.Writer, action ...string) error
ComposeWithStreams executes a docker-compose command but allows the caller to specify stdin/stdout/stderr
func ContainerName ¶
func ContainerName(container docker.APIContainers) string
ContainerName returns the container's human readable name.
func ContainerWait ¶
ContainerWait provides a wait loop to check for a single container in "healthy" status. waittime is in seconds. This is modeled on https://gist.github.com/ngauthier/d6e6f80ce977bedca601 Returns logoutput, error, returns error if not "healthy"
func ContainerWaitLog ¶ added in v1.21.5
ContainerWaitLog provides a wait loop to check for container in "healthy" status. with a given log output timeout is in seconds. This is modeled on https://gist.github.com/ngauthier/d6e6f80ce977bedca601 Returns logoutput, error, returns error if not "healthy"
func ContainersWait ¶ added in v1.21.5
ContainersWait provides a wait loop to check for multiple containers in "healthy" status. waittime is in seconds. Returns logoutput, error, returns error if not "healthy"
func CopyFromContainer ¶ added in v1.21.5
CopyFromContainer copies a path from a specified container and location to a dstPath on host
func CopyIntoContainer ¶ added in v1.21.5
func CopyIntoContainer(srcPath string, containerName string, dstPath string, exclusion string) error
CopyIntoContainer copies a path (file or directory) into a specified container and location
func CopyIntoVolume ¶ added in v1.21.5
func CopyIntoVolume(sourcePath string, volumeName string, targetSubdir string, uid string, exclusion string, destroyExisting bool) error
CopyIntoVolume copies a file or directory on the host into a docker volume sourcePath is the host-side full path volumeName is the volume name to copy to targetSubdir is where to copy it to on the volume uid is the uid of the resulting files exclusion is a path to be excluded If destroyExisting the volume is removed and recreated
func CreateVolume ¶ added in v1.21.5
func CreateVolume(volumeName string, driver string, driverOpts map[string]string, labels map[string]string) (volume *docker.Volume, err error)
CreateVolume creates a docker volume
func DownloadDockerCompose ¶ added in v1.21.5
func DownloadDockerCompose() error
DownloadDockerCompose gets the docker-compose binary and puts it into ~/.ddev/.bin
func DownloadDockerComposeIfNeeded ¶ added in v1.21.5
DownloadDockerComposeIfNeeded downloads the proper version of docker-compose if it's either not yet installed or has the wrong version. Returns downloaded bool (true if it did the download) and err
func EnsureDdevNetwork ¶ added in v0.9.4
func EnsureDdevNetwork()
EnsureDdevNetwork just creates or ensures the ddev network exists or exits with fatal.
func EnsureNetwork ¶
EnsureNetwork will ensure the docker network for ddev is created.
func Exec ¶ added in v1.21.5
Exec does a simple docker exec, no frills, just executes the command with the specified uid (or defaults to root=0 if empty uid) Returns stdout, stderr, error
func FindContainerByLabels ¶
func FindContainerByLabels(labels map[string]string) (*docker.APIContainers, error)
FindContainerByLabels takes a map of label names and values and returns any docker containers which match all labels.
func FindContainerByName ¶ added in v1.21.5
func FindContainerByName(name string) (*docker.APIContainers, error)
FindContainerByName takes a container name and returns the container ID If container is not found, returns nil with no error
func FindContainersByLabels ¶
func FindContainersByLabels(labels map[string]string) ([]docker.APIContainers, error)
FindContainersByLabels takes a map of label names and values and returns any docker containers which match all labels. Explanation of the query: * docs: https://docs.docker.com/engine/api/v1.23/ * Stack Overflow: https://stackoverflow.com/questions/28054203/docker-remote-api-filter-exited
func FindContainersWithLabel ¶ added in v1.21.5
func FindContainersWithLabel(label string) ([]docker.APIContainers, error)
FindContainersWithLabel returns all containers with the given label It ignores the value of the label, is only interested that the label exists.
func GetAppContainers ¶
func GetAppContainers(sitename string) ([]docker.APIContainers, error)
GetAppContainers retrieves docker containers for a given sitename.
func GetContainerEnv ¶
func GetContainerEnv(key string, container docker.APIContainers) string
GetContainerEnv returns the value of a given environment variable from a given container.
func GetContainerHealth ¶
func GetContainerHealth(container *docker.APIContainers) (string, string)
GetContainerHealth retrieves the health status of a given container. returns status, most-recent-log
func GetContainerStateByName ¶ added in v1.21.5
GetContainerStateByName returns container state for the named container
func GetDockerClient ¶
GetDockerClient returns a docker client respecting the current docker context but DOCKER_HOST gets priority
func GetDockerComposeVersion ¶ added in v1.21.5
GetDockerComposeVersion runs docker-compose -v to get the current version
func GetDockerContainers ¶
func GetDockerContainers(allContainers bool) ([]docker.APIContainers, error)
GetDockerContainers returns a slice of all docker containers on the host system.
func GetDockerContext ¶ added in v1.21.5
GetDockerContext() returns the currently set docker context, host, and error
func GetDockerHostID ¶ added in v1.21.5
func GetDockerHostID() string
GetDockerHostID returns DOCKER_HOST but with all special characters removed It stands in for docker context, but docker context name is not a reliable indicator
func GetDockerIP ¶ added in v0.19.0
GetDockerIP returns either the default Docker IP address (127.0.0.1) or the value as configured by $DOCKER_HOST (if DOCKER_HOST is an tcp:// URL)
func GetDockerVersion ¶ added in v1.21.5
GetDockerVersion gets the cached or api-sourced version of docker engine
func GetExposedContainerPorts ¶ added in v1.21.5
GetExposedContainerPorts takes a container pointer and returns an array of exposed ports (and error)
func GetHostDockerInternalIP ¶ added in v1.21.5
GetHostDockerInternalIP returns either "" (will use the hostname as is) (for Docker Desktop on macOS and Windows with WSL2) or a usable IP address But there are many cases to handle Linux classic installation Gitpod (the Linux technique does not work during prebuild) WSL2 with Docker-ce installed inside WSL2 with PhpStorm or vscode running inside WSL2 And it matters whether they're running IDE inside. With docker-inside-wsl2, the bridge docker0 is what we want It's also possible to run vscode Language Server inside the web container, in which case host.docker.internal should actually be 127.0.0.1 Inside WSL2, the way to access an app like PhpStorm running on the Windows side is described in https://learn.microsoft.com/en-us/windows/wsl/networking#accessing-windows-networking-apps-from-linux-host-ip and it involves parsing /etc/resolv.conf.
func GetLiveDockerComposeVersion ¶ added in v1.21.5
GetLiveDockerComposeVersion runs `docker-compose --version` and caches result
func GetNFSServerAddr ¶ added in v1.21.5
GetNFSServerAddr gets the addrss that can be used for the NFS server. It's almost the same as GetDockerHostInternalIP() but we have to get the actual addr in the case of linux; still, linux rarely is used with NFS. Returns "host.docker.internal" by default (not empty)
func GetPublishedPort ¶
func GetPublishedPort(privatePort int64, container docker.APIContainers) int
GetPublishedPort returns the published port for a given private port.
func ImageExistsLocally ¶ added in v1.2.0
ImageExistsLocally determines if an image is available locally.
func InspectContainer ¶ added in v1.21.5
InspectContainer returns the full result of inspection
func IsDockerDesktop ¶ added in v1.21.5
func IsDockerDesktop() bool
IsDockerDesktop detects if running on Docker Desktop
func MassageWindowsHostMountpoint ¶ added in v1.4.0
MassageWindowsHostMountpoint changes C:/path/to/something to //c/path/to/something THis is required for docker bind mounts on docker toolbox. Sadly, if we have a Windows drive name, it has to be converted from C:/ to //c for Win10Home/Docker toolbox
func MassageWindowsNFSMount ¶ added in v1.21.5
MassageWindowsNFSMount changes C:\Path\to\something to /c/Path/to/something
func NetworkExists ¶ added in v1.21.5
NetworkExists returns true if the named network exists Mostly intended for tests
func RemoveContainer ¶ added in v1.4.0
RemoveContainer stops and removes a container
func RemoveContainersByLabels ¶ added in v1.21.5
RemoveContainersByLabels removes all containers that match a set of labels
func RemoveImage ¶ added in v1.21.5
RemoveImage removes an image with force
func RemoveNetwork ¶ added in v1.21.5
RemoveNetwork removes the named docker network
func RemoveVolume ¶ added in v1.21.5
RemoveVolume removes named volume. Does not throw error if the volume did not exist.
func RestartContainer ¶ added in v1.21.5
RestartContainer stops and removes a container
func RunSimpleContainer ¶ added in v1.1.0
func RunSimpleContainer(image string, name string, cmd []string, entrypoint []string, env []string, binds []string, uid string, removeContainerAfterRun bool, detach bool, labels map[string]string) (containerID string, output string, returnErr error)
RunSimpleContainer runs a container (non-daemonized) and captures the stdout/stderr. It will block, so not to be run on a container whose entrypoint or cmd might hang or run too long. This should be the equivalent of something like docker run -t -u '%s:%s' -e SNAPSHOT_NAME='%s' -v '%s:/mnt/ddev_config' -v '%s:/var/lib/mysql' --rm --entrypoint=/migrate_file_to_volume.sh %s:%s" Example code from https://gist.github.com/fsouza/b0bf3043827f8e39c4589e88cec067d8 Returns containerID, output, error
func VolumeExists ¶ added in v1.21.5
VolumeExists checks to see if the named volume exists.
Types ¶
This section is empty.