2016-05-09 18 views
6

Sono un principiante nel mondo Docker, ho trascorso le mie vacanze per imparare questa finestra mobile (tuttavia è molto più difficile di Vagrant). Quindi uso Ubuntu 16.04, ho installato con successo la finestra mobile e la finestra mobile-componi.Docker - docker-comporre 'versione' non ha opzioni di configurazione

Ho letto questo tutorial: Quickstart: Docker Compose and Rail s Ma questo non funziona ... forse il tutorial non va bene.

ho questa finestra mobile-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 

ho ottenuto questo errore sempre:

$ 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, va bene, ho letto un sacco di risultato google, e sembra io sono in un troube, perché io uso Ubuntu. Sfortunatamente il numero di versione più alto di docker in Ubuntu è solo 1.5.2. (Ho provato a scaricare la 1.7.1 con curl, ma 1.5.2 installato automaticamente.)

$ 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 

Avete qualche idea, come posso correre i binari finestra mobile basato? Non riesco ad installare la finestra mobile, perché uso Ubuntu e l'installazione sarà sempre fallita.

Tuttavia il mio PHP docker-compose.yml va bene, perché posso eseguirlo: slight_smile: Ma questo tutorial sulle guide non è buono.

risposta

7

Il motivo è che hai rimosso le due prime linee dell'esercitazione di esempio che stai seguendo e che sono importanti.
Perché, guardando la versione docker, si dovrebbe essere su una versione di docker-compose superiore a 1.6.x.

Per identificare questo, è possibile eseguire

$ docker-compose -v 

Nel mio caso che mi viene

finestra mobile-comporre la versione 1.7.0, costruire 0d7bf73

Se la versione non è 1.7.xo superiore quindi il muggito di informazioni si applica sicuramente a voi.

questo dovrebbe essere di lavoro:

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 

Al momento non ci sono tre versioni del formato di file di composizione:

  1. Versione 1, il formato legacy. Questo è specificato omettendo una chiave di versione nella radice di YAML.
  2. Versione 2.x. Questo è specificato con una versione: '2' o versione: '2.1' voce nella radice dello YAML.
  3. Versione 3.x, la versione più recente e consigliata, progettata per essere compatibile con cross-compatibile tra Compose e la modalità sciame del Docker Engine. Questo è specificato con una versione: '3' o versione: '3.1', ecc., Voce nella radice dello YAML.

Inoltre, ecco un po '/ Compositore matrice di file docker-compose versione:

 
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.+ 

Fonte: from docker documentation

  • Versione 1 è supportato da Compose fino a 1.6.x . Sarà deprecato in una futura versione di Compose.
  • I file della versione 2 sono supportati da Compose 1.6.0+ e richiedono un Docker Engine della versione 1.10.0+.
  • Un aggiornamento della versione 2, che introduce nuovi parametri disponibili solo con Docker Engine versione 1.12.0+
  • Un aggiornamento della versione 2.1 che introduce nuovi parametri disponibili solo con Docker Engine versione 1.13.0+. Questa versione consente inoltre di specificare i numeri di scala predefiniti all'interno della configurazione del servizio.
  • Progettato per essere cross-compatibile tra Compose e la modalità sciame del Docker Engine, la versione 3 rimuove diverse opzioni e ne aggiunge molte altre.

Nelle pagine di documentazione docker ci sono anche ora guide pratiche su come aggiornare il file di composizione:

Ulteriori finestra mobile utile Comporre documentazione:

2

Penso che la risposta dal b.enoit.be è quella giusta, ma solo per completezza (e per il bene di chiunque utilizzi un vecchio versione di docker-compose che non è ancora in grado di aggiornare) dovrebbe essere possibile farlo cambiando depends_on a 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 

Questo perché depends_on è stato aggiunto solo nella nuova versione del formato di composizione docker.

2

Oltre a @b.enoit.be answer:

Ubuntu (e probabilmente Debian) utenti:

Non utilizzare pacchetto apt docker-compose!

Se si sta usando in questo momento:

apt purge docker-compose 

Funziona bene con loro 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 

Si può scegliere di installare il loro ufficiale docker-engine anche prima, se è stato utilizzato anche pacchetti apt per questo.

3

Questo mostra che la versione della finestra mobile-compose è di una versione minore. Quindi, se siete su Ubuntu, è possibile disinstallare finestra mobile-composizione:

sudo apt-get purge docker-compose 

Quindi, è possibile reinstallare la versione più recente con questi comandi:

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

Poi,

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

Questa risposta ha risolto il mio problema. Ho dovuto eseguire tutti e tre i comandi come 'sudo', e ho anche dovuto cambiare la directory di installazione in'/usr/bin/'per installare correttamente Nextcloud – crypdick

Problemi correlati