web-dev-qa-db-fra.com

L'installation de git échoue dans Dockerfile

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?

11
dingo_d

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.

24
Alex Karshin

Quelques idées:

    1. Remplacer 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".
    1. Vous avez ajouté la clé ssh, mais avez-vous confirmé qu'il s'agissait de 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.

5
emory