docker-compse生成错误 – 不受支持的版本

我正在尝试使用postgres dockerise我的rails应用程序。 我遵循了几个在线tutoarials,但我有很多麻烦。

我也支持不起作用的公司代理

我可以dockerdocker生成–build_args并通过http代理。

我不想运行docker构build和我得到以下错误:

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来获取代理时,是否必须传入任何参数?

有任何想法吗?

您的问题是版本值中的智能报价。 使用正常的双引号或单引号

 version: '2' 

要么

 version: "2" 

而不是'' 。 他们不同于'"

编辑-1

有很less其他问题与您的撰写,参数应该是构build的一部分。 另外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 

所以编写了一个如何使用环境variables来传递值的例子。 如果环境variables不可用,如何使用默认值${HTTPS_PROXY_FROM_ENV:-192.168.2.2}

你也可以build立一个特定的服务并使用下面的parameter passing它们的构build参数

 docker-compose build --build-arg "http_proxy=192.168.2.2" web