summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitor Anjos <vitorbartier@hotmail.com>2020-06-27 15:07:32 -0300
committerUlysses Souza <ulysses.souza@docker.com>2020-08-10 10:32:45 +0200
commit17b41b27a8ab23797f5db9c0df23e1a247ebf4cc (patch)
treeba79ffab4d5640cd5751ef1a8248cd58f7a53a0a
parentb23eb2deab5695f0749902fb127d91f5ca16f051 (diff)
Ignore build context path validation when it is not necessary
Signed-off-by: Vitor Anjos <vitorbartier@hotmail.com>
-rw-r--r--compose/config/config.py15
-rw-r--r--tests/acceptance/cli_test.py14
-rw-r--r--tests/fixtures/no-build/docker-compose.yml8
3 files changed, 36 insertions, 1 deletions
diff --git a/compose/config/config.py b/compose/config/config.py
index 90baeeaa..c7cc7240 100644
--- a/compose/config/config.py
+++ b/compose/config/config.py
@@ -729,9 +729,22 @@ def validate_extended_service_dict(service_dict, filename, service):
def validate_service(service_config, service_names, config_file):
+ def build_image():
+ args = sys.argv[1:]
+ if 'pull' in args:
+ return False
+
+ if '--no-build' in args:
+ return False
+
+ return True
+
service_dict, service_name = service_config.config, service_config.name
validate_service_constraints(service_dict, service_name, config_file)
- validate_paths(service_dict)
+
+ if build_image():
+ # We only care about valid paths when actually building images
+ validate_paths(service_dict)
validate_cpu(service_config)
validate_ulimits(service_config)
diff --git a/tests/acceptance/cli_test.py b/tests/acceptance/cli_test.py
index dd43e00c..92168e93 100644
--- a/tests/acceptance/cli_test.py
+++ b/tests/acceptance/cli_test.py
@@ -748,6 +748,20 @@ services:
assert BUILD_CACHE_TEXT not in result.stdout
assert BUILD_PULL_TEXT not in result.stdout
+ def test_up_ignore_missing_build_directory(self):
+ self.base_dir = 'tests/fixtures/no-build'
+ result = self.dispatch(['up', '--no-build'])
+
+ assert 'alpine exited with code 0' in result.stdout
+ self.base_dir = None
+
+ def test_pull_ignore_missing_build_directory(self):
+ self.base_dir = 'tests/fixtures/no-build'
+ result = self.dispatch(['pull'])
+
+ assert 'Pulling my-alpine' in result.stderr
+ self.base_dir = None
+
def test_build_pull(self):
# Make sure we have the latest busybox already
pull_busybox(self.client)
diff --git a/tests/fixtures/no-build/docker-compose.yml b/tests/fixtures/no-build/docker-compose.yml
new file mode 100644
index 00000000..5de4d9b6
--- /dev/null
+++ b/tests/fixtures/no-build/docker-compose.yml
@@ -0,0 +1,8 @@
+version: "3"
+services:
+ my-alpine:
+ image: alpine:3.12
+ container_name: alpine
+ entrypoint: 'echo It works!'
+ build:
+ context: /this/path/doesnt/exists # and we don't really care. We just want to run containers already pulled.