[英]How to specify a service in my docker-compose.yml file that has its own docker-compose.yml file in docker hub?
[英]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.