web-dev-qa-db-fra.com

Comment vérifier mon docker-compose.yml?

J'installe une pile de conteneurs en utilisant docker-compose. Pourtant, en courant

docker-compose up

J'obtiens un message d'erreur plutôt cryptique:

Traceback (most recent call last):
  File "/usr/local/bin/docker-compose", line 9, in <module>
    load_entry_point('docker-compose==1.4.2', 'console_scripts', 'docker-compose')()
  File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 39, in main
    command.sys_dispatch()
  File "/usr/local/lib/python2.7/dist-packages/compose/cli/docopt_command.py", line 21, in sys_dispatch
    self.dispatch(sys.argv[1:], None)
  File "/usr/local/lib/python2.7/dist-packages/compose/cli/command.py", line 27, in dispatch
    super(Command, self).dispatch(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/compose/cli/docopt_command.py", line 24, in dispatch
    self.perform_command(*self.parse(argv, global_options))
  File "/usr/local/lib/python2.7/dist-packages/compose/cli/command.py", line 57, in perform_command
    verbose=options.get('--verbose'))
  File "/usr/local/lib/python2.7/dist-packages/compose/cli/command.py", line 78, in get_project
    config.load(config_details),
  File "/usr/local/lib/python2.7/dist-packages/compose/config.py", line 138, in load
    for service_name, service_dict in list(dictionary.items()):
AttributeError: 'NoneType' object has no attribute 'items'

Comment déboguer? J'ai vérifié que le yml est valide, mais cela ne fonctionne pas.

14
k0pernikus

J'ai oublié de sauvegarder mon docker-compose.yml, donc c'était vide.

Je suis tombé sur la solution dans ce problème pour améliorer le message d'erreur qui décrivait le comportement.

On reçoit un joli message si non docker-compose.yml existe du tout:

Can't find a suitable configuration file in this directory or any parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yaml, fig.yml, fig.yaml

C'était annoncé sur le problème du docker-compose liste qu'il y aura un message d'erreur plus agréable dans la prochaine version 1.5:

Top level object needs to be a dictionary. Check your .yml file that
you have defined a service at the top level.

Depuis la version 1.7.1, le message d'erreur indiquant que votre fichier est vide se lit comme suit:

ERROR: Top level object in './docker-compose.yml' needs to be an
object not '<type 'NoneType'>'.
39
k0pernikus