git install fails in Dockerfile

GitDocker

Git Problem Overview


I'm trying to pull the repository I'm working on while doing a docker build, so I followed this tutorial so I added in my 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

In my docker-compose.yml I added

secrets:
  host_ssh_key:
    file: ~/.ssh/id_rsa

And I'm adding

secrets:
  - host_ssh_key

In one of the service.

Since this is only for my local use (I don't plan on deploying or using this for the production, I just want to test it out) it's fine to use it this way - if it'll work because currently the build fails at the git install stage with error

> E: The update command takes no arguments > > ERROR: Service 'web' failed to build: The command '/bin/sh -c apt-get update apt-get upgrade apt-get install git' returned a non-zero code: 100

What am I missing?

Git Solutions


Solution 1 - Git

You are overanalyzing this. It's just a simple typo. Should be:

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y git

Those are 3 separate commands.

Solution 2 - Git

Some thoughts:

    1. Replace apt-get install git with apt-get install --assume-yes git. Without the --assume-yes it will prompt you for confirmation, which you are unable to give and it will be smart enough to figure that out and assume you meant "NO".
    1. You added the ssh key, but did you confirm it was 0600. I would just copy it and specifically chmod 0600 ~/.ssh/id_rsa to be sure.

Overall, your Dockerfile looks very clever and I got some fresh ideas from reading it.

Solution 3 - Git

For those working with alpine images, RUN apk add --no-cache git did the trick for me.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questiondingo_dView Question on Stackoverflow
Solution 1 - GitAlex KarshinView Answer on Stackoverflow
Solution 2 - GitemoryView Answer on Stackoverflow
Solution 3 - GitJairo LozanoView Answer on Stackoverflow