【问题标题】:Docker compose build errorDocker撰写构建错误
【发布时间】:2015-12-24 18:35:36
【问题描述】:

如果我使用命令 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 你能告诉我如何解决它吗?

【问题讨论】:

  • 包括您的docker-compose.yml
  • 如何包含以及在哪里?
  • @Rider_BY: alkis 的意思是您应该将整个docker-compose.yml 文件粘贴到您的问题中,以便我们可以看到它。
  • 我粘贴了我的 docker-compose.yml。

标签: linux ubuntu docker


【解决方案1】:

您需要将端口定义放在短端口(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 语句也应该只带有一个数字并且也应该被引用。 在上面添加了所有需要的更改。

【讨论】:

    猜你喜欢
    • 2018-04-26
    • 2019-12-25
    • 2019-01-27
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多