【发布时间】:2019-09-30 15:15:35
【问题描述】:
当我尝试构建时看到以下错误。也尝试过更改多个版本,但没有用。
docker-compose up --build
错误:撰写文件“./docker-compose.yml”无效,因为: 无效的顶级属性“worker”。此 Compose 文件的有效顶级部分是:版本、服务、网络、卷、机密、配置和以“x-”开头的扩展。
您可能会看到此错误,因为您使用了错误的 Compose 文件版本。指定支持的版本(例如“2.2”或“3.3”)并将您的服务定义放在
services键下,或者省略version键并将您的服务定义放在文件的根目录以使用版本1。 有关 Compose 文件格式版本的更多信息,请参阅https://docs.docker.com/compose/compose-file/
以下是我的撰写文件
version: '3'
services:
postgres:
image: 'postgres:latest'
redis:
image: 'redis:latest'
nginx:
restart: always
build:
dockerfile: Dockerfile.dev
context: ./nginx
ports:
- '3050:80'
api:
build:
dockerfile: Dockerfile.dev
context: ./server
volumes:
- /app/node_modules
- ./server:/app
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
- PGUSER=postgres
- PGHOST=postgres
- PGDATABASE=postgres
- PGPASSWORD=postgres_password
- PGPORT=5432
client:
build:
dockerfile: Dockerfile.dev
context: ./client
volumes:
- /app/node_modules
- ./client:/app
worker:
build:
dockerfile: Dockerfile.dev
context: ./worker
volumes:
- /app/node_modules
- ./worker:/app
【问题讨论】:
-
YAML 文件无效。请检查
client:及以下的缩进(client:及以下的每行多留两个空格)。 -
添加了,一旦我用 yaml lint 检查了它是完美的,你能检查一下吗
-
但是对于 docker 来说并不完美。见我上面的评论。
client:和worker:必须在服务下(不在同一级别)。
标签: docker-compose