0
votes

Charger le fichier de configuration de Shell lors du démarrage du conteneur

Problème

Je veux charger une personnalisée .zshrc code> Chaque fois que je saisis le conteneur Docker avec Docker Run -it Container_name code> étant donné que le .zshrc fichier est déjà dans le conteneur. p>

Description h1>

J'ai un dockerfile avec la structure suivante: p>

FROM archlinux:latest

# Install things...
# Install zsh & oh-my-zsh
# Retrieve custom .zshrc from a repository and place it at ~/.zshrc
# Clone extensions for oh-my-zsh

# Run zsh on container start
CMD [ "zsh" ]


3 commentaires

Vous pouvez mapper votre répertoire. docs.docker.com/storage/volumes


Je ne comprends pas vraiment comment cela fonctionnerait. Cela ne signifie-t-il pas que je dois avoir le fichier localement sur ma machine hôte? Je me demandais si je pouvais utiliser le fichier déjà cloné dans le conteneur Docker.


@ALEXHEXAN: Je n'ai pas assez de connaissances sur Docker, mais pouvez-vous définir dans la configuration de Docker une variable d'environnement, qui est ensuite établie avant que ZSH ne commence? Si vous définissez le varialble zdotdir , il doit nommer un répertoire, et le fichier .zshrc est ensuite provenant de ce répertoire à la place de $ home .


3 Réponses :


1
votes

Je pense que vous devez mettre à jour le contenu de $ home / .profile . Voici un exemple.

le .profile: xxx

the .zshrc: xxx

le dockerfile: xxx

alors vous pouvez l'essayer avec xxx


éditer:

au cas où vous Vous ne voulez pas copier un nouveau .profile , vous pouvez toujours ajouter des choses dans l'existence. e.g. xxx


3 commentaires

Cela fonctionne. Sur une note latérale, je me demande si je pouvais le faire avec un fichier qui est déjà à l'intérieur du conteneur. Est-il possible de courburer pour les fichiers .profile et .zshrc au lieu de les copier dans le conteneur?


bien sûr que c'est possible. J'ai mis à jour la réponse pour fournir un exemple


Néanmoins, l'approche @ Exadra37 est plus propre



1
votes

DockerFile

Vous devez ajouter la commande chs / chemin / chemin / à / shell code> pour ajouter la coque ZSH comme valeur par défaut pour l'utilisateur dans le conteneur: p>

docker run --rm -it --entrypoint "chsh -s /root/.zshrc" image-name


0 commentaires

0
votes

Le problème n'était pas complètement avec le dockerfile . Oui, @ exadra37 mentionné cmd ["zsh && source ~ / .zshrc"] n'a pas fonctionné à cause de l'ordre d'exécution. Cependant, le problème était avec mon .zshrc configuration.

Après avoir répété à nouveau sur ma propre machine, j'ai réalisé qu'il ne se chargeait pas non plus.

Conclusion

cmd ["/ bin / zsh"] Comme la dernière ligne de mon Dockerfile charge automatiquement le fichier .zshrc situé sur /root/.zshrc < / Code>, je devais juste m'assurer que mon fichier de configuration était écrit correctement.


0 commentaires