2015-10-05 8 views
10

Konfiguruję stos kontenerów za pomocą funkcji dokowania. Jednak uruchamiającJak zweryfikować plik docker-compose.yml?

docker-compose up 

mam dość enigmatyczny komunikat o błędzie:

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' 

Jak debugować? Sprawdziłem, czy plik yml jest poprawny, ale nie działa.

Odpowiedz

20

Zapomniałem zapisać mój docker-compose.yml, więc było puste.

Natknąłem się na rozwiązanie w this issue about making the error message better, które opisywało zachowanie.

Odnosi miłą wiadomość, jeśli nie docker-compose.yml w ogóle istnieje:

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 

Było anounced on the docker-compose's issue lista, która będzie ładniejszy komunikat o błędzie w Nadchodzące 1,5 wydaniu:

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

Od wersji 1.7.1 komunikat o błędzie informujący, że plik jest pusty, brzmi:

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

Święte bzdury, nie mogę uwierzyć, że zapomniałem też zapisać. –

+0

@CodyReichert Rozważ aktualizację kompozycji dokowanej, aby uzyskać bardziej czytelny komunikat o błędzie. – k0pernikus

+1

LOL. nie trafił, uratować. Ładnie wykonane z tą odpowiedzią. Dokładny. –