mirror of https://github.com/docker/docker-py.git
check for tag match before build using OCI regex
Signed-off-by: Daniel Lombardi <lombardi.daniel.o@gmail.com>
This commit is contained in:
parent
cb8f2c6630
commit
9439a10ea1
|
|
@ -129,6 +129,9 @@ class BuildApiMixin:
|
||||||
raise errors.DockerException(
|
raise errors.DockerException(
|
||||||
'Can not use custom encoding if gzip is enabled'
|
'Can not use custom encoding if gzip is enabled'
|
||||||
)
|
)
|
||||||
|
if tag is not None:
|
||||||
|
if not utils.match_tag(tag):
|
||||||
|
raise errors.DockerException(f"invalid tag '{tag}': invalid reference format")
|
||||||
|
|
||||||
for key in container_limits.keys():
|
for key in container_limits.keys():
|
||||||
if key not in constants.CONTAINER_LIMITS_KEYS:
|
if key not in constants.CONTAINER_LIMITS_KEYS:
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
from .build import create_archive, exclude_paths, mkbuildcontext, tar
|
from .build import match_tag, create_archive, exclude_paths, mkbuildcontext, tar
|
||||||
from .decorators import check_resource, minimum_version, update_headers
|
from .decorators import check_resource, minimum_version, update_headers
|
||||||
from .utils import (
|
from .utils import (
|
||||||
compare_version, convert_port_bindings, convert_volume_binds,
|
compare_version, convert_port_bindings, convert_volume_binds,
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,14 @@ from ..constants import IS_WINDOWS_PLATFORM
|
||||||
|
|
||||||
|
|
||||||
_SEP = re.compile('/|\\\\') if IS_WINDOWS_PLATFORM else re.compile('/')
|
_SEP = re.compile('/|\\\\') if IS_WINDOWS_PLATFORM else re.compile('/')
|
||||||
|
_TAG = re.compile(
|
||||||
|
r"^[a-z0-9]+((\.|_|__|-+)[a-z0-9]+)*(\/[a-z0-9]+((\.|_|__|-+)[a-z0-9]+)*)*" \
|
||||||
|
+ "(:[a-zA-Z0-9_][a-zA-Z0-9._-]{0,127})?$"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def match_tag(tag: str) -> bool:
|
||||||
|
return bool(_TAG.match(tag))
|
||||||
|
|
||||||
|
|
||||||
def tar(path, exclude=None, dockerfile=None, fileobj=None, gzip=False):
|
def tar(path, exclude=None, dockerfile=None, fileobj=None, gzip=False):
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,12 @@ class BuildTest(BaseAPIClientTest):
|
||||||
def test_build_container_with_named_dockerfile(self):
|
def test_build_container_with_named_dockerfile(self):
|
||||||
self.client.build('.', dockerfile='nameddockerfile')
|
self.client.build('.', dockerfile='nameddockerfile')
|
||||||
|
|
||||||
|
def test_build_with_invalid_tag(self):
|
||||||
|
with pytest.raises(TypeError):
|
||||||
|
self.client.build(
|
||||||
|
".", dockerfile="nameddockerfile", tag="https://example.com"
|
||||||
|
)
|
||||||
|
|
||||||
def test_build_container_with_container_limits(self):
|
def test_build_container_with_container_limits(self):
|
||||||
self.client.build('.', container_limits={
|
self.client.build('.', container_limits={
|
||||||
'memory': 1024 * 1024,
|
'memory': 1024 * 1024,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue