Merge pull request #115857 from lbpdt/feature/docker-tools-layered-base-image
dockerTools.buildLayeredImage: support fromImage
This commit is contained in:
@@ -161,12 +161,18 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
"docker run --rm ${examples.layered-image.imageName} cat extraCommands",
|
||||
)
|
||||
|
||||
with subtest("Ensure building an image on top of a layered Docker images work"):
|
||||
with subtest("Ensure images built on top of layered Docker images work"):
|
||||
docker.succeed(
|
||||
"docker load --input='${examples.layered-on-top}'",
|
||||
"docker run --rm ${examples.layered-on-top.imageName}",
|
||||
)
|
||||
|
||||
with subtest("Ensure layered images built on top of layered Docker images work"):
|
||||
docker.succeed(
|
||||
"docker load --input='${examples.layered-on-top-layered}'",
|
||||
"docker run --rm ${examples.layered-on-top-layered.imageName}",
|
||||
)
|
||||
|
||||
|
||||
def set_of_layers(image_name):
|
||||
return set(
|
||||
@@ -205,6 +211,16 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
assert "FROM_CHILD=true" in env, "envvars from the child should be preserved"
|
||||
assert "LAST_LAYER=child" in env, "envvars from the child should take priority"
|
||||
|
||||
with subtest("Ensure environment variables of layered images are correctly inherited"):
|
||||
docker.succeed(
|
||||
"docker load --input='${examples.environmentVariablesLayered}'"
|
||||
)
|
||||
out = docker.succeed("docker run --rm ${examples.environmentVariablesLayered.imageName} env")
|
||||
env = out.splitlines()
|
||||
assert "FROM_PARENT=true" in env, "envvars from the parent should be preserved"
|
||||
assert "FROM_CHILD=true" in env, "envvars from the child should be preserved"
|
||||
assert "LAST_LAYER=child" in env, "envvars from the child should take priority"
|
||||
|
||||
with subtest("Ensure image with only 2 layers can be loaded"):
|
||||
docker.succeed(
|
||||
"docker load --input='${examples.two-layered-image}'"
|
||||
@@ -219,6 +235,18 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
"docker run bulk-layer ls /bin/hello",
|
||||
)
|
||||
|
||||
with subtest(
|
||||
"Ensure the bulk layer with a base image respects the number of maxLayers"
|
||||
):
|
||||
docker.succeed(
|
||||
"docker load --input='${pkgs.dockerTools.examples.layered-bulk-layer}'",
|
||||
# Ensure the image runs correctly
|
||||
"docker run layered-bulk-layer ls /bin/hello",
|
||||
)
|
||||
|
||||
# Ensure the image has the correct number of layers
|
||||
assert len(set_of_layers("layered-bulk-layer")) == 4
|
||||
|
||||
with subtest("Ensure correct behavior when no store is needed"):
|
||||
# This check tests that buildLayeredImage can build images that don't need a store.
|
||||
docker.succeed(
|
||||
|
||||
Reference in New Issue
Block a user