我试图使用docker-compose。我首先从docker文档中复制了一个例子:
version: '3'
services:
web:
image: nginx:alpine
ports:
- "80:80"
networks:
webnet:
volumes:
- type: volume
source: mydata
target: /data
volume:
nocopy: true
- type: bind
source: ./static
target: /opt/app/static
但我得到的是:ERROR: In file './docker-compose.yml', volume must be a mapping, not an array.
我认为与旧版本的docker-compose有关。所以我尝试更新在MacO上运行的docker,但它是最新的。通过检查版本,这就是我得到的:
Matteos-MacBook-Pro-2:chateo matteo$ docker-compose -v
docker-compose version 1.14.0, build c7bdf9e
不应该是1.17吗?我不明白。任何提示?
我尝试用键替换数组:值列表:
volumes:
mydata:
type: volume
source: mydata
target: /data
volume:
nocopy: true
static:
type: bind
source: ./static
target: /opt/app/static
但我得到的是以下内容:
Matteos-MacBook-Pro-2:chateo matteo$ docker-compose build
ERROR: The Compose file './docker-compose.yml' is invalid because:
volumes.static value Additional properties are not allowed ('source', 'type', 'target' were unexpected)
volumes.mydata value Additional properties are not allowed ('volume', 'source', 'type', 'target' were unexpected)
答案 0 :(得分:1)
使用此语法,卷定义应该在使用它的服务内部,请参阅official documentation
version: "3.2"
services:
web:
image: nginx:alpine
volumes:
- type: volume
source: mydata
target: /data
volume:
nocopy: true
- type: bind
source: ./static
target: /opt/app/static
db:
image: postgres:latest
volumes:
- "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
- "dbdata:/var/lib/postgresql/data"
volumes:
mydata:
dbdata:
否则,您可以声明具有特定驱动程序like this的卷:
version: "3.2"
volumes:
mydata:
driver: local
driver_opts:
o: uid=500,gid=500
答案 1 :(得分:0)
尝试将volumes
定义更改为以下内容:
volumes:
mydata:
type: volume
source: mydata
target: /data
volume:
nocopy: true
static:
type: bind
source: ./static
target: /opt/app/static
我可能错了,但卷不能是阵列。