docker-compse构建错误 - 不支持的版本

时间:2017-09-15 18:47:30

标签: ruby-on-rails docker docker-compose

我正在尝试使用postgres将我的rails应用程序停靠。我跟踪了几个在线的tutoarials,但我遇到了很多麻烦。

我也支持不提供帮助的公司代理

我可以使用docker dock -build_args并传入http代理。

我没有尝试运行docker-compose构建,我收到以下错误:

ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version ("2.0", "2.1", "3.0", "3.1", "3.2") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.

这是我的docker-compose.yml:

version: ‘2’
services:
  web:
    build: .
    context: .
    args:
      - http_proxy
      - https_proxy
      - no_proxy
    command: bundle exec rails s -b 0.0.0.0
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db
    environment:
      - POSTGRESQL_PASSWORD=abcd12345
  db:
    image: postgres:9.6.2-alpine
    environment:
      POSTGRES_USER: postgres
      POSTGRES_DB: myappnameapp_development

我尝试将版本更改为3并完全删除它,但它总是出错。

我的第二个问题 - 在尝试运行docker-compose以通过代理时,是否必须传入任何args?

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您的问题是版本值中的智能引号。使用普通双引号或单引号

version: '2'

version: "2"

而非。它们与'"

不同

修改-1

你的作品很少有其他问题,args应该是构建的一部分。 args也应该有一个值。它们应该用作对象而不是数组。所以你更正如下

version: "3"
services:
  web:
    build:
      context: .
      args:
        http_proxy: "192.168.0.11"
        https_proxy: ${HTTPS_PROXY_FROM_ENV}
        no_proxy: ${HTTPS_PROXY_FROM_ENV:-192.168.2.2}
    command: bundle exec rails s -b 0.0.0.0
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db
    environment:
      - POSTGRESQL_PASSWORD=abcd12345
  db:
    image: postgres:9.6.2-alpine
    environment:
      POSTGRES_USER: postgres
      POSTGRES_DB: myappnameapp_development

因此compose具有如何使用环境变量传递值的示例。另外,如果环境变量不可用,如何使用默认值${HTTPS_PROXY_FROM_ENV:-192.168.2.2}

您还可以使用下面的

构建特定服务并传递其构建参数
docker-compose build --build-arg "http_proxy=192.168.2.2" web