Search in sources :

Example 1 with ContainerCreateConfig

use of org.eclipse.jkube.kit.build.service.docker.access.ContainerCreateConfig in project jkube by eclipse.

the class RunService method createAndStartContainer.

/**
 * Create and start a container with the given image configuration.
 * @param imageConfig image configuration holding the run information and the image name
 * @param portMapping container port mapping
 * @param gavLabel label to tag the started container with
 * @param baseDir base directory
 * @param properties properties to fill in with dynamically assigned ports
 * @param defaultContainerNamePattern pattern to use for naming containers. Can be null in which case a default pattern is used
 * @param buildTimestamp date which should be used as the timestamp when calculating container names
 * @return the container id
 *
 * @throws DockerAccessException if access to the docker backend fails
 */
public String createAndStartContainer(ImageConfiguration imageConfig, PortMapping portMapping, GavLabel gavLabel, Properties properties, File baseDir, String defaultContainerNamePattern, Date buildTimestamp) throws DockerAccessException {
    RunImageConfiguration runConfig = imageConfig.getRunConfiguration();
    String imageName = imageConfig.getName();
    Collection<Container> existingContainers = queryService.getContainersForImage(imageName, true);
    String containerName = ContainerNamingUtil.formatContainerName(imageConfig, defaultContainerNamePattern, buildTimestamp, existingContainers);
    ContainerCreateConfig config = createContainerConfig(imageName, runConfig, portMapping, gavLabel, properties, baseDir);
    String id = docker.createContainer(config, containerName);
    startContainer(imageConfig, id, gavLabel);
    if (portMapping.needsPropertiesUpdate()) {
        updateMappedPortsAndAddresses(id, portMapping);
    }
    return id;
}
Also used : Container(org.eclipse.jkube.kit.build.api.model.Container) ContainerCreateConfig(org.eclipse.jkube.kit.build.service.docker.access.ContainerCreateConfig) RunImageConfiguration(org.eclipse.jkube.kit.config.image.RunImageConfiguration)

Example 2 with ContainerCreateConfig

use of org.eclipse.jkube.kit.build.service.docker.access.ContainerCreateConfig in project jkube by eclipse.

the class RunService method createContainerConfig.

// visible for testing
ContainerCreateConfig createContainerConfig(String imageName, RunImageConfiguration runConfig, PortMapping mappedPorts, GavLabel gavLabel, Properties mavenProps, File baseDir) throws DockerAccessException {
    try {
        ContainerCreateConfig config = new ContainerCreateConfig(imageName).hostname(runConfig.getHostname()).domainname(runConfig.getDomainname()).user(runConfig.getUser()).workingDir(runConfig.getWorkingDir()).entrypoint(runConfig.getEntrypoint()).exposedPorts(mappedPorts.getContainerPorts()).environment(runConfig.getEnvPropertyFile(), runConfig.getEnv(), mavenProps).labels(mergeLabels(runConfig.getLabels(), gavLabel)).command(runConfig.getCmd()).hostConfig(createContainerHostConfig(runConfig, mappedPorts, baseDir));
        RunVolumeConfiguration volumeConfig = runConfig.getVolumeConfiguration();
        if (volumeConfig != null) {
            resolveRelativeVolumeBindings(baseDir, volumeConfig);
            config.binds(volumeConfig.getBind());
        }
        NetworkConfig networkConfig = runConfig.getNetworkingConfig();
        if (networkConfig.isCustomNetwork() && networkConfig.hasAliases()) {
            ContainerNetworkingConfig networkingConfig = new ContainerNetworkingConfig().aliases(networkConfig);
            config.networkingConfig(networkingConfig);
        }
        return config;
    } catch (IllegalArgumentException e) {
        throw new IllegalArgumentException(String.format("Failed to create contained configuration for [%s]", imageName), e);
    }
}
Also used : RunVolumeConfiguration(org.eclipse.jkube.kit.config.image.RunVolumeConfiguration) NetworkConfig(org.eclipse.jkube.kit.config.image.NetworkConfig) ContainerCreateConfig(org.eclipse.jkube.kit.build.service.docker.access.ContainerCreateConfig) ContainerNetworkingConfig(org.eclipse.jkube.kit.build.service.docker.access.ContainerNetworkingConfig)

Aggregations

ContainerCreateConfig (org.eclipse.jkube.kit.build.service.docker.access.ContainerCreateConfig)2 Container (org.eclipse.jkube.kit.build.api.model.Container)1 ContainerNetworkingConfig (org.eclipse.jkube.kit.build.service.docker.access.ContainerNetworkingConfig)1 NetworkConfig (org.eclipse.jkube.kit.config.image.NetworkConfig)1 RunImageConfiguration (org.eclipse.jkube.kit.config.image.RunImageConfiguration)1 RunVolumeConfiguration (org.eclipse.jkube.kit.config.image.RunVolumeConfiguration)1