ERROR: In file './docker-compose.yml', service 'volumes' must be a mapping not an array
ERROR: In file './docker-compose.yml', service 'volumes' must be a mapping not an array
我的 docker-compose.yml 如下所示,我正在尝试遵循 docker 注册表文档 here 中的撰写文件。当我 运行 docker-compose 时,我得到以下错误。
ERROR: In file './docker-compose.yml', service 'volumes' must be a
mapping not an array.
registry:
restart: always
image: sudarshan/registry
ports:
- 5000:5000
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
REGISTRY_AUTH: silly
REGISTRY_AUTH_SILLY_SERVICE: SILLY_SERVICE
REGISTRY_AUTH_SILLY_REALM: SILLY_REALM
volumes:
- /usr/certs:/certs
我的docker版本是
Docker version 1.12.1, build 23cf638
docker-撰写版本为
docker-compose version 1.7.1, build 0a9ab35
运行 在 Ubuntu 16.04
编辑:
也试过
registry:
restart: always
image: sudarshan/registry
ports:
- 5000:5000
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
REGISTRY_AUTH: silly
REGISTRY_AUTH_SILLY_SERVICE: SILLY_SERVICE
REGISTRY_AUTH_SILLY_REALM: SILLY_REALM
volumes:
- /usr/certs:/certs
问题是您没有正确缩进字段。您的 docker-compose 应如下所示:
registry:
restart: always
image: sudarshan/registry
ports:
- 5000:5000
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
REGISTRY_AUTH: silly
REGISTRY_AUTH_SILLY_SERVICE: SILLY_SERVICE
REGISTRY_AUTH_SILLY_REALM: SILLY_REALM
volumes:
- /usr/certs:/certs
我认为你必须这样做:
version: '3'
services:
web:
stdin_open: true
environment:
- CHOKIDAR_USEPOLLING=true
build:
context: .
dockerfile: Dockerfile.dev
ports:
- '3000:3000'
volumes:
- /app/node_modules
- .:/app
注意各节之间的语法差异
每个容器,
与末尾的卷和网络列表相比:
<...snip...>
volumes:
- "database-volume:/var/lib/postgresql/data" ## <---- dash !
networks:
- foo ### <---- dash!
- private ### <----- dash!
volumes:
foovol: # NO dash!
barvol: # NO dash!
networks:
baznetwork: # NO dash!
private: # NO dash!
我和 services.db.environments 有同样的问题。
解决方法是使用“=”代替冒号。
像这样:
environment:
- POSTGRES_USER=someuser
- POSTGRES_PASSWORD=userpassword
- POSTGRES_DB=mydb
对我来说,作为一个 docker 和 yaml 新手忘记添加一个选项卡,就像那样:
volumes:
bundle_path:
应该是
volumes:
bundle_path:
PS: 最好在代码编辑器中添加 yaml 扩展
我在做:
volumes:
- myVolume: {}
但正确的是:
volumes:
myVolume: {}
我的 docker-compose.yml 如下所示,我正在尝试遵循 docker 注册表文档 here 中的撰写文件。当我 运行 docker-compose 时,我得到以下错误。
ERROR: In file './docker-compose.yml', service 'volumes' must be a mapping not an array.
registry:
restart: always
image: sudarshan/registry
ports:
- 5000:5000
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
REGISTRY_AUTH: silly
REGISTRY_AUTH_SILLY_SERVICE: SILLY_SERVICE
REGISTRY_AUTH_SILLY_REALM: SILLY_REALM
volumes:
- /usr/certs:/certs
我的docker版本是
Docker version 1.12.1, build 23cf638
docker-撰写版本为
docker-compose version 1.7.1, build 0a9ab35
运行 在 Ubuntu 16.04
编辑:
也试过
registry:
restart: always
image: sudarshan/registry
ports:
- 5000:5000
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
REGISTRY_AUTH: silly
REGISTRY_AUTH_SILLY_SERVICE: SILLY_SERVICE
REGISTRY_AUTH_SILLY_REALM: SILLY_REALM
volumes:
- /usr/certs:/certs
问题是您没有正确缩进字段。您的 docker-compose 应如下所示:
registry:
restart: always
image: sudarshan/registry
ports:
- 5000:5000
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
REGISTRY_AUTH: silly
REGISTRY_AUTH_SILLY_SERVICE: SILLY_SERVICE
REGISTRY_AUTH_SILLY_REALM: SILLY_REALM
volumes:
- /usr/certs:/certs
我认为你必须这样做:
version: '3'
services:
web:
stdin_open: true
environment:
- CHOKIDAR_USEPOLLING=true
build:
context: .
dockerfile: Dockerfile.dev
ports:
- '3000:3000'
volumes:
- /app/node_modules
- .:/app
注意各节之间的语法差异 每个容器, 与末尾的卷和网络列表相比:
<...snip...>
volumes:
- "database-volume:/var/lib/postgresql/data" ## <---- dash !
networks:
- foo ### <---- dash!
- private ### <----- dash!
volumes:
foovol: # NO dash!
barvol: # NO dash!
networks:
baznetwork: # NO dash!
private: # NO dash!
我和 services.db.environments 有同样的问题。 解决方法是使用“=”代替冒号。
像这样:
environment:
- POSTGRES_USER=someuser
- POSTGRES_PASSWORD=userpassword
- POSTGRES_DB=mydb
对我来说,作为一个 docker 和 yaml 新手忘记添加一个选项卡,就像那样:
volumes:
bundle_path:
应该是
volumes:
bundle_path:
PS: 最好在代码编辑器中添加 yaml 扩展
我在做:
volumes:
- myVolume: {}
但正确的是:
volumes:
myVolume: {}