Bla*_*Eye 2 docker docker-compose
使用以下 docker-compose.yml 我总是得到一个我无法解释的语法错误(我没有看到两个 docker-compose.ymls 之间的第 2 行和第 3 行的区别)
---
version: '2'
services:
app-module:
container_name: app-module:
env_file: ./app-module:.env
image: registry.x/app/app-module:latest
network_mode: "bridge"
ports:
- "30303:30303"
volumes:
- type: volume
source: node-volume
target: /datadir
- ./data:/data
- ./log:/log
Run Code Online (Sandbox Code Playgroud)
错误信息:
ERROR: yaml.parser.ParserError: while parsing a block mapping
in "./docker-compose.yml", line 2, column 1
expected <block end>, but found '<block mapping start>'
in "./docker-compose.yml", line 3, column 3
Run Code Online (Sandbox Code Playgroud)
我没有看到与其他工作文件的任何语法差异。
这是我用作文件灵感的工作 docker-compose.yml :
---
version: '2'
services:
app-node:
container_name: app-node
env_file: ./app-node.env
image: registry.x/group/app-node:latest
network_mode: "bridge"
ports:
- "7990:7990"
- "7999:7999"
volumes:
- ./data:/data
- ./log:/log
Run Code Online (Sandbox Code Playgroud)
证明:
$ docker-compose config
services:
app-node:
container_name: app-node
environment: {}
image: registry.x/group/app-node:latest
network_mode: bridge
ports:
- 7990:7990/tcp
- 7999:7999/tcp
volumes:
- ...app-node/Test/data:/data:rw
- ...app-node/Test/log:/log:rw
version: '2.0'
Run Code Online (Sandbox Code Playgroud)
空格在 YAML 中很重要。在services:
这之前你有两个空格不应该在那里。你告诉YAML那services
是version
,但version
已经有值。
它的区别在于:
foo: bar
in_foo: bar
Run Code Online (Sandbox Code Playgroud)
这in_foo
是行不通的,因为是 in foo
,并且:
foo: bar
not_in_foo: bar
Run Code Online (Sandbox Code Playgroud)
这会起作用,因为not_in_bar
不在foo
.
或者,这将是有效的语法(但 docker-compose 将失败,因为它需要一个字符串version
):
version:
services:
foo: bar
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5631 次 |
最近记录: |