A useful simple git container running in alpine Linux, especially for tiny Linux distro, such as RancherOS, which doesn't have a package manager.
https://github.com/alpine-docker/git
https://travis-ci.org/alpine-docker/git
https://hub.docker.com/r/alpine/git/tags/
Notes:
New tags with non-root user in image has been created.
alpine/git:<version>-user
alpine/git:user
Its uid and gid in container are 1000
$ docker run -ti --rm --entrypoint=id alpine/git:user
uid=1000(git-user) gid=1000(git-user)
Docker build from feature branch feature/non-root
docker run -ti --rm -v ${HOME}:/root -v $(pwd):/git alpine/git <git_command>
For example, if you need clone this repository, you can run
docker run -ti --rm -v ${HOME}:/root -v $(pwd):/git alpine/git clone https://github.com/alpine-docker/git.git
To save your type, add this fuction to ~/.bashrc
or ~/.profile
$ cat ~/.profile
...
function git () {
(docker run -ti --rm -v ${HOME}:/root -v $(pwd):/git alpine/git "$@")
}
...
$ source ~/.profile
for example, if you need clone this repository, with the function you just set, you can run it as local command
git clone https://github.com/alpine-docker/git.git
alias git="docker run -ti --rm -v $(pwd):/git -v $HOME/.ssh:/root/.ssh alpine/git"
- You need redefine (re-run) the alias, when you switch between different repositories
- You need run above alias command only under git repository's root directory.
$ cd application
$ alias git="docker run -ti --rm -v $(pwd):/git -v $HOME/.ssh:/root/.ssh alpine/git"
$ git clone git@github.com:YOUR_ACCOUNT/YOUR_REPO.git
$ cd YOUR_REPO
$ alias git="docker run -ti --rm -v $(pwd):/git -v $HOME/.ssh:/root/.ssh alpine/git"
# edit several files
$ git add .
$ git status
$ git commit -m "test"
$ git push -u origin master
Supports git, http/https and ssh protocols.
Refer: Git on the Server - The Protocols
Set Travis CI to run builds every month.
- build on latest alpine image
- build with latest git in the alpine image
- generate new tag for this image
- generate git's version as image tag as well (
v${GIT_VERSION}
) - update
latest
tag for this image