2016-05-09 14 views
6

Ich bin ein Neuling in der Docker-Welt, verbrachte ich meinen Urlaub, um diesen Hafenarbeiter zu lernen (aber es ist viel schwieriger als Vagrant). Also benutze ich Ubuntu 16.04, ich habe erfolgreich das Andockfenster und Docker-Compose installiert.Docker - Docker-komponieren "Version" hat keine Konfigurationsoptionen

Ich lese dieses Tutorial: s Aber das funktioniert nicht ... vielleicht ist das Tutorial nicht in Ordnung.

Ich habe dieses Docker-compose.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 

ich diesen Fehler habe immer:

$ 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' 

Mmmm, okay, ich lese viel von Google-Ergebnis, und es scheint, ich bin in einer Trouble, weil ich Ubuntu benutze. Leider ist die höchste Versionsnummer von docker in Ubuntu nur 1.5.2. (Ich habe versucht, die 1.7.1 mit curl herunterladen, aber 1.5.2 automatisch installiert.)

$ 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 

Haben Sie irgendwelche Ideen, wie kann ich die Schienen basierend Docker laufen? Ich kann den Docker-Rechner nicht installieren, da ich Ubuntu benutze und die Installation immer fehlschlägt.

Aber meine PHP docker-compose.yml ist in Ordnung, weil ich es ausführen kann: light_smile: Aber diese Schienen Tutorial ist nicht gut.

Antwort

7

Der Grund ist, dass Sie die ersten beiden Zeilen des Beispiel-Tutorials entfernt haben, denen Sie folgen, und sie sind von Bedeutung.
Da, mit Blick auf die docker Version haben Sie sollten Sie auf eine Version von docker-compose höher als 1.6.x sein.

Um dies zu identifizieren, können Sie

$ docker-compose -v 

In meinem Fall laufen die mich

Docker-compose 1.7.0 Version bekommt, bauen 0d7bf73

dort Wenn Ihre Version ist 1.7.x oder höher dann gelten die unten stehenden Informationen definitiv für Sie.

Dies sollte funktionieren:

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 

Derzeit gibt es drei Versionen des Compose Dateiformat:

  1. Version 1, die Legacy-Format. Dies wird durch das Weglassen einer Version Schlüssel im Stamm der YAML angegeben.
  2. Version 2.x. Dies wird mit einer Version angegeben: '2' oder Version: '2.1' Eintrag im Stammverzeichnis der YAML.
  3. Version 3.x, die neueste und empfohlene Version, entworfen um Cross-kompatibel zwischen Compose und der Swarm-Modus der Docker Engine. Dies wird mit einer Version angegeben: '3' oder Version: '3.1', etc., Eintrag im Stammverzeichnis der YAML.

Zusätzlich ist hier ein wenig docker-compose Version/Komponist Datei 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.+ 

Quelle: from docker documentation

  • Version 1 von Compose unterstützt bis 1.6.x . Es wird in einer zukünftigen Compose-Version veraltet sein.
  • Version 2-Dateien werden von Compose 1.6.0+ unterstützt und erfordern eine Docker Engine der Version 1.10.0+.
  • Ein Upgrade von Version 2, das neue Parameter nur mit Docker Engine Version 1.12.0+
  • einführt
  • Ein Upgrade der Version 2.1, die neue Parameter nur mit Docker Engine Version 1.13.0+ verfügbar macht. Diese Version ermöglicht auch die Angabe von Standard-Nummern innerhalb der Konfiguration des Dienstes.
  • Entwickelt, um kompatibel zu sein zwischen Compose und dem Schwarm-Modus der Docker Engine, Version 3 entfernt mehrere Optionen und fügt mehrere hinzu.

Auf Docker Dokumentationsseiten gibt es jetzt auch praktische Anleitungen, wie Sie Ihre Compose-Datei aktualisieren:

Zusätzliche nützliche Docker Dokumentation Compose:

2

Ich denke, die Antwort von b.enoit.be ist die richtige, sondern nur der Vollständigkeit halber (und aus Gründen der jemand mit einem alten Version von docker-compose, die noch nicht updaten kann, sollte es möglich sein, dies zu erledigen, indem Sie depends_on zu links:

ändern 10
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 

Dies liegt daran, depends_on wurde nur in der neuen Version des Docker-Compose-Format hinzugefügt.

2

Neben @b.enoit.be answer:

Ubuntu (und wahrscheinlich Debian) Benutzer:

Verwenden Sie apt docker-compose Paket nicht!

Wenn Sie es jetzt verwenden:

apt purge docker-compose 

es mit ihren ganz gut funktioniert official instructions:

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 

Sie könnten ihre offiziellen docker-engine auch zuerst installiert werden soll, wenn Sie auch verwendet apt-Pakete dafür.

3

Dies zeigt, dass die Version Ihres Docker-Compose von einer niedrigeren Version ist. Also, wenn Sie auf Ubuntu sind, können Sie Docker-compose deinstallieren:

sudo apt-get purge docker-compose 

Dann können Sie die neueste Version mit diesem Befehl neu installieren:

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

Dann

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

Diese Antwort löste mein Problem. Ich musste alle drei Befehle als 'sudo' ausführen und auch das Installationsverzeichnis in'/usr/bin/'ändern, damit Nextcloud korrekt installiert wurde – crypdick

Verwandte Themen