alpine-docker/git

Dockerfile does not conform to entrypoint best practice

muppet3000 opened this issue · 8 comments

According to the consistency rules here: https://github.com/docker-library/official-images#consistency

The dockerfile should be changed to
CMD "git --help"

This will allow tools such as jenkins to run jobs in the way that it is expecting rather than having to hard code the overriding of the entrypoint every time.

Are you fine to raise the PR?

Also, I find that some CI systems are not too happy with the VOLUMES entry. Is the volume really needed? Can we not just drop it? I think the workdir is more then enough.

Here is a proposed entrypoint.sh:

#!/bin/sh

cmd='git'
if [[ -x "$1" && -f "$1" ]]; then
    cmd="$1"
    shift
fi

exec "$cmd" "$@"

This would be integrated in the Dockerfile like so:

FROM alpine

WORKDIR /git
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
CMD []

I would also favour @oliv3r's / @sfllaw's suggestion to remove the git volume from the Dockerfile.

there was an exist PR #10 for similar requirement.

If we agree to go with the consistency rules, please raise a new PR for your solution.

I am fine to remove the git volume from Dockerfile

TBH, this is still an issue, I've seen many problem reports over the net caused by exactly this, and also this was my problem when I first used this docker. @ozbillwang can we action on this in some way? Is there any problem with https://github.com/alpine-docker/git/pull/10/files that currently needs fixing?

Please understand that this image is widely used and has exceeded my expectations.

image

I'm cautious about making any significant changes to it to avoid disrupting things outside of it.

@ozbillwang

  1. the change proposed was backwards-compatible AFAIK (it ran the git command by default, and only called bash if the git call failed),
  2. fear is an emotion, and mixing emotions with engineering practices is seldom a good idea,
  3. if you still want to keep this repo as-it-is, can you maybe just create and publish a fixed fork instead?