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, устаревший формат. Это определяется путем исключения версии ключ в корне YAML.
- Версия 2.х. Это указано с версией: '2' или: '2.1' запись в корне YAML.
- версия 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 для этого.