1
votes

Comment toucher un fichier lorsque le conteneur commence à utiliser Dockerfile

Mon Dockerfile

docker run -it -d first:latest bash 

Build que j'utilise

docker build -ti first:latest .

mais quand j'essaye de l'exécuter en utilisant

FROM ubuntu
WORKDIR .
RUN apt-get update
RUN apt-get install apache2 -y
COPY fffff.txt /var/www/html/
ENTRYPOINT ["sh", "-c", "touch /root/FILE1"]

il va se fermer directement, comment puis-je rendre ce conteneur persistant?


0 commentaires

3 Réponses :



1
votes

Les directives ENTRYPOINT et CMD indiquent à Docker ce qu'il doit faire lorsqu'il démarre un conteneur à partir de l'image.

Vous dites à Docker que, lorsqu'il démarre un conteneur de l'image, il doit créer un fichier vide dans le système de fichiers temporaire du conteneur. Une fois ce processus terminé, le conteneur a terminé son travail et devrait se fermer.

En pratique, vous voulez généralement définir ces métadonnées pour dire à Docker d'exécuter le serveur ou l'application que vous avez installé dans l'image, comme un processus de premier plan. Dans le cas d'Apache, cela ressemblerait plus à

CMD ["apachectl", "start", "-DFOREGROUND"]

Obtenir un shell interactif dans un conteneur peut être pratique pour le débogage, mais ce n'est généralement pas la façon dont vous souhaitez travailler conteneurs. docker run seul devrait idéalement produire un serveur entièrement fonctionnel.


0 commentaires

0
votes

J'ai eu le même problème, après deux jours de lecture de ces documents:

Documents Docker: CMD

Documents Docker: ENTRYPOINT

Quelle est la différence entre CMD et ENTRYPOINT dans un Dockerfile?

Docker RUN vs CMD vs ENTRYPOINT

et compilez et exécutez environ 30 fichiers Docker: | , enfin j'ai découvert comment je peux toucher un fichier et rendre le conteneur persistant et ne pas quitter.

J'ai utilisé ENTRYPOINT comme vous l'avez fait mais j'ai ajouté un sh comme dernière commande de cette façon:

exec form:

docker run -it --rm --name mycontainer -e "myvar=parsa" imagename


0 commentaires