Créer des fichiers / dossiers sur docker-composition de construire ou de docker-composer jusqu'
J'essaie mes premiers pas dans le Panneau, j'ai donc essayé de faire un Dockerfile qui crée un simple index.html et un répertoire d'images (Voir le code ci-dessous)
Puis-je exécuter docker-composition de construire pour créer l'image, et docker-composer-up pour exécuter le serveur. Mais je n'ai pas de fichier index.html ou un dossier d'images.
C'est mon Dockerfile:
FROM php:apache
MAINTAINER [email protected]
WORKDIR /var/www/html
RUN touch index.html \
&& mkdir images
Et c'est mon menu fixe-composer.yml
version: '2'
services:
web:
build: .docker/web
ports:
- "80:80"
volumes:
- ./docroot:/var/www/html
Je m'attends à ce que cela permettrait de créer un point d'entrée unique de dossier avec un répertoire de l'image et une index.html mais je ne reçois le docroot.
OriginalL'auteur Brentg | 2017-02-22
Vous devez vous connecter pour publier un commentaire.
L'image ne contenant ces fichiers
Le Dockerfile contient des instructions sur la façon de construire une image. L'image que vous avez construit à partir de cette Dockerfile ne contenir
index.html
etimages/
.Mais, vous-rode dans le contenant
Au moment de l'exécution, vous avez créé un conteneur à partir de l'image que vous avez construit. Dans ce conteneur, vous avez monté le répertoire externe
./docroot
comme/var/www/html
.Un montage qui permet de masquer tout ce qui a été dans cette voie avant, donc ce montage permet de masquer le contenu avant de
/var/www/html
, en les remplaçant par ce qui est en./docroot
.Mettre des trucs dans votre monture
Dans les commentaires que vous avez demandé
La manière dont vous avez fait les choses, on est monté au-dessus de vos fichiers d'origine, de sorte qu'ils ne sont plus accessibles une fois que le conteneur est créé.
Il ya un couple de façons dont vous pouvez gérer cela.
Changer leur chemin dans l'image
Si vous placez ces fichiers dans un autre chemin d'accès à votre image, puis ils ne seront pas remplacés par le mont.
Maintenant, au moment de l'exécution, vous aurez toujours cette monter au
/var/www/html
, qui contiendra le contenu du répertoire externe. Qui peut ou peut ne pas être un répertoire vide. Vous pouvez dire le récipient sur le démarrage de l'exécution d'un script et de copier des choses, si c'est ce que vous voulez.(C'est en supposant que vous n'avez pas défini de point d'entrée - si vous le faites, vous allez peut-être juste besoin d'ajuster votre script existant au lieu.)
entrypoint.sh:
Cela va démarrer le
cp
de commande et de contrôle main quelle que soit laCMD
pour cette image.De la manipulation de l'extérieur
Vous avez également l'option de simplement de prédéfinir les fichiers que vous voulez dans
./docroot
de l'extérieur. Ensuite, ils vont juste être là quand le conteneur démarre et ajoute le répertoire de montage.J'ai mis à jour ma réponse avec quelques observations sur cette question.
Wow, qui sont de très bonnes remarques, merci beaucoup 😀
OriginalL'auteur Dan Lowe