FS#54617 - [python-docker] 2.4.0 breaks docker-compose

Attached to Project: Community Packages
Opened by David McKay (rawkode) - Wednesday, 28 June 2017, 08:49 GMT
Last edited by Felix Yan (felixonmars) - Thursday, 29 June 2017, 16:38 GMT
Task Type Bug Report
Category Upstream Bugs
Status Closed
Assigned To Felix Yan (felixonmars)
Architecture All
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

Description:

`docker-compose` itself works, but any sub-command leads to the errors below.

Additional info:
* python-docker-2.4.0


```
Traceback (most recent call last):
File "/usr/bin/docker-compose", line 11, in <module>
load_entry_point('docker-compose==1.14.0', 'console_scripts', 'docker-compose')()
File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 68, in main
command()
File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 115, in perform_command
project = project_from_options('.', options)
File "/usr/lib/python3.6/site-packages/compose/cli/command.py", line 37, in project_from_options
override_dir=options.get('--project-directory'),
File "/usr/lib/python3.6/site-packages/compose/cli/command.py", line 91, in get_project
config_data = config.load(config_details)
File "/usr/lib/python3.6/site-packages/compose/config/config.py", line 362, in load
for config_file in config_details.config_files
File "/usr/lib/python3.6/site-packages/compose/config/config.py", line 362, in <listcomp>
for config_file in config_details.config_files
File "/usr/lib/python3.6/site-packages/compose/config/config.py", line 528, in process_config_file
validate_against_config_schema(config_file)
File "/usr/lib/python3.6/site-packages/compose/config/validation.py", line 378, in validate_against_config_schema
config_file.filename)
File "/usr/lib/python3.6/site-packages/compose/config/validation.py", line 435, in handle_errors
errors = list(sorted(errors, key=str))
File "/usr/lib/python3.6/site-packages/jsonschema/validators.py", line 105, in iter_errors
for error in errors:
File "/usr/lib/python3.6/site-packages/jsonschema/_validators.py", line 304, in properties_draft4
schema_path=property,
File "/usr/lib/python3.6/site-packages/jsonschema/validators.py", line 121, in descend
for error in self.iter_errors(instance, schema):
File "/usr/lib/python3.6/site-packages/jsonschema/validators.py", line 105, in iter_errors
for error in errors:
File "/usr/lib/python3.6/site-packages/jsonschema/_validators.py", line 16, in patternProperties
v, subschema, path=k, schema_path=pattern,
File "/usr/lib/python3.6/site-packages/jsonschema/validators.py", line 121, in descend
for error in self.iter_errors(instance, schema):
File "/usr/lib/python3.6/site-packages/jsonschema/validators.py", line 105, in iter_errors
for error in errors:
File "/usr/lib/python3.6/site-packages/jsonschema/_validators.py", line 216, in ref
for error in validator.descend(instance, resolved):
File "/usr/lib/python3.6/site-packages/jsonschema/validators.py", line 121, in descend
for error in self.iter_errors(instance, schema): File "/usr/lib/python3.6/site-packages/jsonschema/validators.py", line 105, in iter_errors
for error in errors:
File "/usr/lib/python3.6/site-packages/jsonschema/_validators.py", line 304, in properties_draft4
schema_path=property,
File "/usr/lib/python3.6/site-packages/jsonschema/validators.py", line 121, in descend
for error in self.iter_errors(instance, schema):
File "/usr/lib/python3.6/site-packages/jsonschema/validators.py", line 105, in iter_errors
for error in errors:
File "/usr/lib/python3.6/site-packages/jsonschema/_validators.py", line 55, in items
for error in validator.descend(item, items, path=index):
File "/usr/lib/python3.6/site-packages/jsonschema/validators.py", line 121, in descend
for error in self.iter_errors(instance, schema):
File "/usr/lib/python3.6/site-packages/jsonschema/validators.py", line 105, in iter_errors
for error in errors:
File "/usr/lib/python3.6/site-packages/jsonschema/_validators.py", line 163, in format
validator.format_checker.check(instance, format)
File "/usr/lib/python3.6/site-packages/jsonschema/_format.py", line 96, in check
result = func(instance)
File "/usr/lib/python3.6/site-packages/compose/config/validation.py", line 51, in format_ports
split_port(instance)
File "/usr/lib/python3.6/site-packages/docker/utils/ports.py", line 57, in split_port
match = PORT_SPEC.match(port)
TypeError: expected string or bytes-like object
```
This task depends upon

Closed by  Felix Yan (felixonmars)
Thursday, 29 June 2017, 16:38 GMT
Reason for closing:  Fixed
Additional comments about closing:  2.4.2-1
Comment by Cedric Brancourt (cedric.brancourt) - Wednesday, 28 June 2017, 15:15 GMT
I have the same issue.

It looks like there is an issue when parsing the port formats.
This issue occured just after the package upgrade.

Downgrading to python-docker-2.3.0-1 is a workaround.
Comment by janek (jbbr) - Wednesday, 28 June 2017, 20:01 GMT
This bug has been reported upstream and should be fixed in 2.4.1.
See the following issue for details: https://github.com/docker/docker-py/issues/1668

Looking forward to an update of the arch package
Comment by vlord (vlord) - Thursday, 29 June 2017, 07:20 GMT
A temporary workaround is to update your /usr/lib/python3.6/site-packages/docker/utils/ports.py file with the following code (between line 56 and 57):

if hasattr(port, 'legacy_repr'):
# This is the worst hack, but it prevents a bug in Compose 1.14.0
# https://github.com/docker/docker-py/issues/1668
# TODO: remove once fixed in Compose stable
port = port.legacy_repr()
port = str(port)

You'll need to respect the indentation as it is python source code: https://github.com/docker/docker-py/pull/1671/files
Comment by Felix Yan (felixonmars) - Thursday, 29 June 2017, 16:35 GMT
2.4.2 is now in the repos.
Comment by Miles (mills00013) - Thursday, 29 June 2017, 16:36 GMT
Can confirm that 2.4.2 fixes the issue.

Loading...