簡體   English   中英

如何驗證我的 docker-compose.yml?

[英]How to verify my docker-compose.yml?

我正在使用 docker-compose 設置容器堆棧。 然而通過運行

docker-compose up

我收到一條相當神秘的錯誤消息:

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'

如何調試? 我已經檢查過 yml 是否有效,但它不起作用。

我忘記保存我docker-compose.yml ,所以它是空的。

我偶然發現了這個問題的解決方案,解決方案關於使描述行為的錯誤消息更好

如果根本不存在docker-compose.yml收到一條很好的消息:

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

docker-compose 的問題列表中宣布,在即將發布的 1.5 版本中會有更好的錯誤消息:

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

從版本 1.7.1 開始,指示您的文件為空的錯誤消息讀取:

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

鑒於最新版本,錯誤消息非常簡單:

$ docker -v
Docker version 19.03.13, build 4484c46d9d
$ docker build .
failed to solve with frontend dockerfile.v0: failed to create LLB definition: the Dockerfile cannot be empty

因此,為了便於使用,請考慮升級您的 docker 引擎。

此錯誤表示YML格式錯誤。 對我來說,我在錯誤的目錄中執行了docker-compose up命令。

您始終可以驗證自己是否正在嘗試通過VIM docker-compose.yml docker-compose.yml執行更新docker-compose.yml VIM docker-compose.yml以查看其是否從控制台內部更新,這可以告訴您是否尚未保存yml文件或在不同的目錄上。

如果您確定您位於正確的目錄中,並且yml文件已更新,則可以將yml代碼放入在線YML驗證器中,以查看其是否存在格式錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM