public async Task <bool> BuildImageAsync(BuildImageParameters buildParams, CancellationToken ct) { var buildOptions = $"-t {buildParams.Image}:{buildParams.Tag} {Path.GetDirectoryName(buildParams.DockerfilePath)}"; var output = await BuildImageAsync(buildOptions, ct); return(output.ContainsIgnoreCase($"Successfully tagged {buildParams.Image}:{buildParams.Tag}")); }
public async Task BuildImageTest() { var dockerFileContent = @"FROM ubuntu:16.10 RUN apt-get update && apt-get upgrade -y"; var tempDirectory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); Directory.CreateDirectory(tempDirectory); var dockerFile = Path.Combine(tempDirectory, "Dockerfile"); File.WriteAllText(dockerFile, dockerFileContent); var svc = new WindowsDockerService(_services); var param = new BuildImageParameters(dockerFile, "rtvs-test-build-image", "latest"); (await svc.BuildImageAsync(param, CancellationToken.None)).Should().BeTrue(); Directory.Delete(tempDirectory, true); }
public async Task <IContainer> CreateContainerFromFileAsync(BuildImageParameters buildParams, CancellationToken ct) { await TaskUtilities.SwitchToBackgroundThread(); var images = await ListImagesAsync(true, ct); if (!images.Any(i => i.Name.EqualsOrdinal(buildParams.Image) && i.Tag.EqualsOrdinal(buildParams.Tag))) { var buildOptions = $"-t {buildParams.Image}:{buildParams.Tag} \"{Path.GetDirectoryName(buildParams.DockerfilePath)}\""; await BuildImageAsync(buildOptions, ct); } var createOptions = Invariant($"-p {buildParams.Port}:5444 --name {buildParams.Name} {buildParams.Image}:{buildParams.Tag} rtvsd"); var containerId = await CreateContainerAsync(createOptions, ct); return(await GetContainerAsync(containerId, ct)); }
public async Task <IContainer> CreateContainerFromFileAsync(BuildImageParameters buildParams, CancellationToken ct) { await TaskUtilities.SwitchToBackgroundThread(); var(dockerFile, imageName, imageTag, imageParams, containerName, containerPort) = buildParams; var images = await ListImagesAsync(true, ct); if (!images.Any(i => i.Name.EqualsOrdinal(imageName) && i.Tag.EqualsOrdinal(imageTag))) { var buildArgs = string.Join(" ", imageParams.Select(p => $"--build-arg {p.Key}={p.Value}")); var buildOptions = $"-t {imageName}:{imageTag} {buildArgs} \"{Path.GetDirectoryName(dockerFile)}\""; await BuildImageAsync(buildOptions, ct); } var createOptions = Invariant($"-p {containerPort}:5444 --name {containerName} {imageName}:{imageTag} rtvsd"); var containerId = await CreateContainerAsync(createOptions, ct); return(await GetContainerAsync(containerId, ct)); }