Docker compose 构建错误

11

若我使用命令docker-compose build,会出现以下类似错误:

ERROR: Validation failed in file './docker-compose.yml', reason(s):
Service 'php' configuration key 'expose' '0' is invalid: should be of
the format 'PORT[/PROTOCOL]'

我使用最新版本的Docker和docker-compose。

我的docker-compose.yml文件中包含以下代码:

application:
    build: code
    volumes:
        - ./symfony:/var/www/symfony
        - ./logs/symfony:/var/www/symfony/app/logs
    tty: true
db:
    image: mysql
    ports:
        - 3306:3306
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: symfony
        MYSQL_USER: root
        MYSQL_PASSWORD: root
php:
    build: php-fpm
    expose:
        - 9000:9000
    volumes_from:
        - application
    links:
        - db
nginx:
    build: nginx
    ports:
        - 80:80
    links:
        - php
    volumes_from:
        - application
    volumes:
        - ./logs/nginx/:/var/log/nginx
elk:
    image: willdurand/elk
    ports:
        - 81:80
    volumes:
        - ./elk/logstash:/etc/logstash
        - ./elk/logstash/patterns:/opt/logstash/patterns
    volumes_from:
        - application
        - php
        - nginx

我使用的是Ubuntu 14.04操作系统,您能告诉我如何修复它吗?


1
请包含您的 docker-compose.yml 文件。 - Alkis Kalogeris
include 和 where 怎么用? - Rider_BY
1
@Rider_BY:alkis 的意思是你应该将整个 docker-compose.yml 文件粘贴到你的问题中,这样我们才能看到它。 - jwodder
我粘贴我的docker-compose.yml文件。 - Rider_BY
1个回答

9

对于短端口(2位数字),您需要将端口定义放在引号中。这是YAML的本质和docker-compose中使用的解析器的结果。

application:
    build: code
    volumes:
        - ./symfony:/var/www/symfony
        - ./logs/symfony:/var/www/symfony/app/logs
    tty: true
db:
    image: mysql
    ports:
        - "3306:3306"
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: symfony
        MYSQL_USER: root
        MYSQL_PASSWORD: root
php:
    build: php-fpm
    expose:
        - "9000"
    volumes_from:
        - application
    links:
        - db
nginx:
    build: nginx
    ports:
        - "80:80"
    links:
        - php
    volumes_from:
        - application
    volumes:
        - ./logs/nginx/:/var/log/nginx
elk:
    image: willdurand/elk
    ports:
        - "81:80"
    volumes:
        - ./elk/logstash:/etc/logstash
        - ./elk/logstash/patterns:/opt/logstash/patterns
    volumes_from:
        - application
        - php
        - nginx

同时,曝光声明应仅包含一个数字,并且应该用引号引用。 以上已添加所有必要的更改。

谢谢!这对团队很有帮助。expose: - "9000"与旧的9000:9000起了作用。 - Stephen Blum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接