web-dev-qa-db-fra.com

Comment installer docker-compose sur Windows

Si je tape les commandes suivantes dans boot2docker comme indiqué sur le site Web de docker:

curl -L https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Lorsque je tape les commandes suivantes pour vérifier si l'installation a réussi, je reçois:

/usr/local/bin/docker-compose: line 1: syntax error: unexpected newline

Alors, comment puis-je installer docker-compose sur boot2docker?

33
Chris

Mise à jour du 7 novembre 2018:

Sur les systèmes de bureau tels que Docker pour Mac et Windows, Docker Compose est inclus dans le cadre de ces installations de bureau.

Selon la documentation , Docker pour Windows et Docker Toolbox inclut déjà Compose avec d'autres applications Docker, de sorte que la plupart des utilisateurs Windows n'ont pas besoin d'installer Compose séparément.


Mise à jour 2017: ceci est maintenant officiellement géré (pour Windows 10 prenant en charge Hyper-V) avec "Docker pour Windows" .
Voir " Installer Docker pour Windows ".
Il a une installation chocolatéepackage pour Docker , donc:

choco install docker-for-windows 
# or
choco upgrade docker-for-windows 

Là encore, cela nécessite Windows 10 Pro, Entreprise et Éducation 64 bits (mise à jour 1511 novembre, version 10586 ou ultérieure) et Microsoft Hyper-V.

Pour les autres Windows, vous avez toujours besoin de VirtualBox + Boot2Docker.


Mise à jour: docker compose 1.5 (nov 2015) devrait le rendre officiellement disponible pour Windows (depuis RC2).

Des requêtes telles que PR 22 et PR 214 ont été utiles.
Commit 13d5efc détaille le processus de construction officiel du binaire Windows.


Réponse originale (Q1-T3 2015).

Attention: la réponse originale ("docker-compose dans un conteneur ") ci-dessous semble avoir un bogue, selon Ed Morley (edmorley) .

Il semble y avoir des problèmes de mise en cache avec la méthode "docker-compose dans un conteneur" (voir problème n ° 6: "Les modifications apportées à docker-compose.yml et le fichier de docker non détecté" )

Ed recommande :

En tant que tel pour l'instant, lancer le Python docker-compose package à l'intérieur de boot2docker semble être la solution la plus fiable pour les utilisateurs Windows (après avoir passé de nombreuses heures à essayer de se battre avec les alternatives) .

Pour installer docker-compose à partir de PyPI, lancez-le à l’intérieur de boot2docker:

docker@boot2docker:~$ 
tce-load -wi python && curl https://bootstrap.pypa.io/get-pip.py | \
  Sudo python - && Sudo pip install -U docker-compose

Pour éviter de devoir exécuter ce qui précède à chaque fois, le boot2docker VM est redémarré (les modifications ne persistent pas), vous pouvez utiliser bootlocal.sh ainsi:

docker@boot2docker:~$ 
echo 'su docker -c "tce-load -wi python" && \
  curl https://bootstrap.pypa.io/get-pip.py | \
  python - && pip install -U docker-compose' | \ 
  Sudo tee /var/lib/boot2docker/bootlocal.sh > /dev/null && \
  Sudo chmod +x /var/lib/boot2docker/bootlocal.sh

(Le su docker -c _ la gymnastique est obligatoire depuis tce-load ne peut pas être exécuté en tant que root, et bootlocal.sh est exécuté en tant que root. Le chmod de bootlocal.sh devrait être inutile une fois # 915 est corrigé.
Ajouter -a à la commande tee si vous avez besoin d’ajouter, plutôt que d’écraser bootlocal.sh.)

Si vous souhaitez utiliser une version préliminaire de docker-compose, remplacez pip install -U docker-compose avec pip install -U docker-compose>=1.3.0rc1 ou équivalent.


Réponse originale:

Je cours aussi docker-compose (sous Windows boot2docker) dans une image par:

De là, un 'dc up' ou 'dc ps 'fonctionne juste. Sous Windows. Avec boot2docker 1.6.

42
VonC

Il existe une solution supplémentaire consistant à exécuter docker-compose sous Windows avec Babun (un port célèbre de Cygwin Shell avec toutes sortes d’améliorations, y compris un gestionnaire de paquets).

Voici comment:

1.) Installez Babun 2.) Ouvrez-le et installez les dépendances requises pour Python et Pip:

pact install python-setuptools 
pact install libxml2-devel libxslt-devel libyaml-devel
curl -skS https://bootstrap.pypa.io/get-pip.py | python
pip install virtualenv
curl -skS https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python

3.) Enfin courir

pip install -U docker-compose

La solution n'est pas la mienne, prise d'ici: http://habrahabr.ru/post/260329/

J'ai une forte opinion, que docker-compose doit être installé sur un hôte, pas sur une machine virtuelle boot2docker, vous n'avez donc pas besoin de ssh tout le temps.

11
Ross Ivantsiv

Vous pouvez installer docker-compose sur Windows avec pip:

pip install -U docker-compose
6
Peter

Il semble qu'ils n'aient pas encore ajouté de support natif à la version Windows de Boot2Docker.

Donc, pour le moment, vous pouvez utiliser docker-compose comme vous l'avez déjà fait avec fig: exécutez-le comme conteneur docker .

5
fayndee

boot2docker versions> = 1.7.0avoir un espace utilisateur de 64 bits . Cela signifie que les binaires pré-construits de leur référentiel github fonctionnent immédiatement.

J'ai utilisé les informations contenues dans réponse de VonC ci-dessus pour écrire un script qui télécharge la dernière version (ou une version spécifique, voir la partie commentée dans le code) et le persiste. Il ne téléchargera le fichier qu'une fois, mais le mettra sur le chemin à chaque démarrage de boot2docker.

Instructions:

  1. boot2docker ssh depuis n'importe quel terminal.
  2. collez le script et appuyez sur entrée.
  3. exit puis exécutez boot2docker restart && boot2docker ssh
  4. Lorsque la boîte est redémarrée, lancez docker-compose pour voir qu'il répond avec sa liste de commandes.

Sous Windows, le boot2docker restart _ commande a tendance à échouer la première fois. Mais c'est juste pour relancer cette commande.

echo 'if [ ! -f /var/lib/boot2docker/etc/docker-compose-`uname -s`-`uname -m` ]; then
    echo "Download docker-compose..."
    # Download latest version
    curl -L https://github.com/docker/compose/releases/download/$(curl -s -L https://github.com/docker/compose/releases/latest | \
        grep -Eo -m 1 docker/compose/releases/tag/\([0-9.]*\) | \
        grep -o [0-9.]*)/docker-compose-`uname -s`-`uname -m` \
    > /var/lib/boot2docker/etc/docker-compose-`uname -s`-`uname -m`
    # Download fixed version
    # curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` \
    # > /var/lib/boot2docker/etc/docker-compose-`uname -s`-`uname -m`
    echo "Done!"
fi
echo "Install docker-compose on path..."
cp /var/lib/boot2docker/etc/docker-compose-`uname -s`-`uname -m` /usr/local/bin/docker-compose &&
chmod +x /usr/local/bin/docker-compose
echo "Done!"
' | Sudo tee /var/lib/boot2docker/bootlocal.sh > /dev/null && \
Sudo chmod +x /var/lib/boot2docker/bootlocal.sh
5
D. Josefsson

J'ai eu du succès après ce numéro sur github

  • installer docker-machine ;
  • installer python (3.4.3 a bien fonctionné)
  • installer pip ;
  • after pip ... lancez cette commande pour installer docker-compose:

    `pip install git+git://github.com/docker/compose.git`
    

Ne pas croire? regardez cette preuve

4
Thiago Martins

Les choses ont progressé et dernièrement, j'ai eu le plus de succès avec la méthode suivante, qui vous permet de l'exécuter de manière native sous Windows, en utilisant Docker.

Tout d’abord, vous voudrez installer Docker CLI pour Windows:

curl -L https://get.docker.com/builds/Windows/x86_64/docker-latest.exe > /usr/bin/docker
chmod +x /usr/bin/docker

Ensuite, construisez l’image docker-compose à partir du référentiel Github:

docker build -t docker-compose github.com/docker/compose

Ensuite, configurez simplement un alias pour exécuter le conteneur:

alias docker-compose='docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock -v `pwd`:`pwd` -w `pwd` docker-compose'

Je l'utilise depuis un moment et je n'ai rencontré aucun problème - la fonctionnalité correspond exactement à ce à quoi vous vous attendiez, comme si vous utilisiez le binaire en natif, vous devez simplement vous assurer que vos dossiers partagés sont correctement mappés dans le répertoire. B2D/VM Docker-Machine. Je trouve plus facile de mettre en miroir les chemins dans VM tels qu'ils se trouvent sur l'hôte, de sorte que mon fichier docker-compose.yml ne soit pas aussi déroutant.

4
CashIsClay

Le moyen le plus simple d’installer Docker Compose (et Docker) sous Windows consiste à utiliser le package chocolatey (gestionnaire de paquets pour Windows) docker-compose , qui doit être installé après le paquet docker . Cela vous évitera de nombreux obstacles lors de l'installation manuelle et vous permettra de mettre à jour votre installation facilement.

Si vous n’êtes pas familier avec Chocolatey, simplement installez-le - par exemple. sur une ligne de commande administrative avec:

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

Maintenant que Chocolatey est installé, il ne reste plus qu’à allumer un Powershell administratif et à faire:

choco install docker
choco install docker-compose

En clair: vous n’avez plus besoin de Boot2Docker pour exécuter Docker sous Windows - Windows supporte nativement Docker pendant un certain temps maintenant. Donc plus besoin de ça.

3
jonashackt

https://github.com/docker/compose/releases/tag/1.5.0rc "La composition est maintenant disponible pour Windows."

3
FDisk

C’est là ma solution idéale pour installer Compose à l’intérieur de boot2docker. Si quelqu'un souhaite prendre en compte la suggestion de VonC de lancer Compose contre l'hôte Docker de son hôte depuis un conteneur, j'ai créé un compagnon conteneur du développeur qui suit les instructions de Compose et qui est facile à installer et à exécuter.

Si vous avez un environnement de type Bourne Shell sous Windows, vous pouvez simplement exécuter:

curl -L https://git.io/vuEqk -o /usr/local/bin/room
chmod +x /usr/local/bin/room

Vous pouvez démarrer un conteneur sur n'importe quel chemin et le prendre à partir de là en exécutant simplement:

room

Vous pouvez éventuellement passer des arguments de commande. Ainsi, si vous vous trouvez dans un répertoire de travail contenant un fichier de configuration Compose, cela suffira pour que tout soit opérationnel:

room docker-compose up

Si vous manquez un environnement Shell favorable, l’installation d’une des distributions Git pour Windows incluant l’invite Git Bash suffirait ou vous pouvez directement utiliser les invites de l’un des deux MinGW ou Cygwin . Sinon, vous pouvez toujours SSH sur votre Docker Machine et l’installer là-bas.

2
Filip Dupanović