Docker-docker-compose 'version' не имеет никаких параметров конфигурации

Я новичок в мире докеров, я провел свой отпуск, чтобы узнать этого докера (однако это намного сложнее, чем Бродяга). Поэтому я использую Ubuntu 16.04, я успешно установил docker и docker-compose.

Я прочитал этот учебник:Quickstart: Докер сочинять и Rails Но это не работает... может, учебник не в порядке.

у меня есть этот докер-сочинять.в формате YML:

db:
    image: postgres
web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
       - .:/www/html
    ports:
       - "3000:3000"
    depends_on:
       - db

Я всегда получал эту ошибку:

$ docker-compose run web rails new . --force --database=postgresql --skip-bundle
ERROR: Validation failed in file './docker-compose.yml', reason(s):
Unsupported config option for 'web' service: 'depends_on'

Мммм, хорошо, я прочитал много результатов google, и кажется, что я в трубе, потому что я использую Ubuntu. К сожалению, самый высокий номер версии docker в Ubuntu это только 1.5.2. (Я попытался загрузить 1.7.1 с завитком, но 1.5.2 установлен автоматически.)

$ docker version
Client:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Tue Apr 26 23:43:49 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Tue Apr 26 23:43:49 2016
 OS/Arch:      linux/amd64

У вас есть идеи, как я могу запустить докер на основе rails? Я не могу установить машину docker, потому что я использую ubuntu, и установка всегда будет неудачной.

однако мой PHP docker-compose.yml в порядке, потому что я может запустить его: slight_smile: но этот учебник rails не хорош.

4 ответов


причина в том, что вы удалили две первые строки примера учебника, которые вы следуете, и они имеют значение.
Потому что, глядя на docker версия у вас есть, вы должны быть на версии docker-compose выше, чем 1.6.x.

чтобы определить это, вы можете запустить

$ docker-compose -v

в моем случае это меня

docker-составить версию 1.7.0, построить 0d7bf73

если ваша версия есть 1.7.X или выше информация ниже определенно относится к вам.

это должно работать:

version: '2'   ## <- this line matter and you removed it out the tutorial
services:      ## <- this line also
    db:
        image: postgres
    web:
        build: .
        command: bundle exec rails s -p 3000 -b '0.0.0.0'
        volumes:
            - .:/www/html
        ports:
            - "3000:3000"
        depends_on:
            - db

в настоящее время существует три версии формата файла Compose:

  1. Версия 1, устаревший формат. Это определяется путем исключения версии ключ в корне YAML.
  2. Версия 2.х. Это указано с версией: '2' или: '2.1' запись в корне YAML.
  3. версия 3.Х, последняя и рекомендуемая версия, предназначенная для кросс-совместимый между Compose и режимом Роя двигателя Докера. Это указано с версией: '3' или: '3.1', и т. д., вступление в корне ЯМЛА.

кроме того, вот немного docker-composeверсия / Composer file matrix:

Compose file format | Docker Engine release
--------------------|----------------------
3.0 ; 3.1           | 1.13.0+
2.1                 | 1.12.0+
2.0                 | 1.10.0+
1.0                 | 1.9.1.+

источник: из документации docker

  • Версия 1 поддерживается Compose до 1.6.х. Это будет устарел в будущем выпуске Compose.
  • файлы версии 2 поддерживаются Compose 1.6.0+ и требуют Docker Engine версии 1.10.0+.
  • обновление версии 2, которая вводит новые параметры, доступные только с Docker Engine версии 1.12.0+
  • обновление версии 2.1, которая вводит новые параметры, доступные только с Docker Engine версия 1.13.0+. Эта версия также позволяет указать масштабные номера по умолчанию внутри сервиса конфигурация.
  • предназначен для перекрестной совместимости между Compose и режимом Роя Docker Engine, версия 3 удаляет несколько опций и добавляет еще несколько.

на страницах документации docker также есть практические руководства по обновлению файла Compose:

дополнительные полезная документация docker Compose:


Это показывает, что версия вашего docker-compose имеет меньшую версию. Таким образом, если вы находитесь на Ubuntu, вы можете удалить docker-compose:

sudo apt-get purge docker-compose

затем вы можете переустановить последнюю версию с помощью следующей команды:

curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

затем,

chmod +x /usr/local/bin/docker-compose

Я думаю, что ответ от b.эноит.be является правильным, но только для полноты (и для тех, кто использует старую версию docker-compose, кто еще не может обновить), должно быть возможно сделать эту работу, изменив depends_on to links:

db:
    image: postgres
web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
       - .:/www/html
    ports:
       - "3000:3000"
    links:
       - db

это так depends_on был добавлен только в новой версии формата docker-compose.


кроме @Б.enoit.быть ответ:

Ubuntu (и, вероятно,Debian) пользователей:

не используйте apt docker-compose пакета!

Если вы используете его прямо сейчас:

apt purge docker-compose

Он работает с должностные инструкции:

curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose;
chmod +x /usr/local/bin/docker-compose;
docker-compose --version; // docker-compose version 1.10.0, build 4bd6f1a

вы можете установить их официальный докер-двигатель слишком Во-первых, если вы также использовали пакеты apt для этого.