J'essaie d'extraire le référentiel sur lequel je travaille tout en construisant un docker, alors j'ai suivi ce tutoriel alors j'ai ajouté dans mon Dockerfile
# this is our first build stage, it will not persist in the final image
FROM ubuntu as intermediate
# install git
RUN apt-get update \
apt-get upgrade \
apt-get install git
# add credentials on build
RUN mkdir ~/.ssh && ln -s /run/secrets/Host_ssh_key ~/.ssh/id_rsa
# make sure your domain is accepted
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.org >> /root/.ssh/known_hosts
RUN git clone [email protected]:my-repo/myproject.git
FROM ubuntu
# copy the repository form the previous image
COPY --from=intermediate /your-repo /srv/your-repo
Dans mon docker-compose.yml
J'ai ajouté
secrets:
Host_ssh_key:
file: ~/.ssh/id_rsa
Et j'ajoute
secrets:
- Host_ssh_key
Dans l'un des service.
Comme il s’agit uniquement d’utilisation locale (je n’envisage pas de le déployer ni de l’utiliser pour la production, je veux juste le tester), il est correct de l’utiliser de cette façon - si cela fonctionne, car la construction échoue actuellement. la phase d'installation de git avec erreur
E: La commande de mise à jour ne prend aucun argument
ERREUR: échec de la création du service 'web': la commande '/ bin/sh -c mise à jour apt-get mise à niveau apt-get install-get install git' a renvoyé un code différent de zéro: 100
Qu'est-ce que je rate?
Vous êtes en train d'analyser cela. C'est juste une simple faute de frappe. Devrait être:
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y git
Ce sont 3 commandes distinctes.
Quelques idées:
apt-get install git
avec apt-get install --assume-yes git
. Sans le --assume-yes
_ il vous demandera confirmation, ce que vous ne pouvez pas donner et il sera suffisamment intelligent pour comprendre cela et supposer que vous vouliez dire "NON".0600
. Je voudrais juste le copier et plus précisément chmod 0600 ~/.ssh/id_rsa
pour être sûr.Globalement, votre fichier Dockerfile a l’air très intelligent et j’ai eu de nouvelles idées en le lisant.