An open API service indexing awesome lists of open source software.

https://github.com/alpine-docker/git

A useful simple git container running in alpine linux, especially for tiny linux distro, such as RancherOS, which don't have package manager.
https://github.com/alpine-docker/git

Last synced: about 1 year ago
JSON representation

A useful simple git container running in alpine linux, especially for tiny linux distro, such as RancherOS, which don't have package manager.

Awesome Lists containing this project

README

          

### docker-git-alpine

[If enjoy, please consider buying me a coffee.](https://www.buymeacoffee.com/ozbillwang)

A useful simple git container running in alpine Linux, especially for tiny Linux distro, such as RancherOS, which doesn't have a package manager.

[![DockerHub Badge](http://dockeri.co/image/alpine/git)](https://hub.docker.com/r/alpine/git/)

### notes about new github action pipeline

From 3rd Oct 2024, the automation build and deploy pipeline has been switched from Circle CI to Github Action (#68 and #70)

### notes about multi-arch images

This feature was added on 23th May 2021.

1. Version v2.30.2 and 1.0.30 are manually pushed by me with multi-arch image supported
2. Older version will be not updated as multi-arch images
3. Newer vesions from now on will be multi-arch images (`--platform linux/amd64,linux/arm/v7,linux/arm64/v8,linux/arm/v6,linux/ppc64le,linux/s390x,linux/386`)
4. I don't support other architectures, except `amd64`, because I have no other environment to do that. If you have any issues with other arch, you need raise PR to fix it.
5. There would be no difference for `docker pull` , `docker run` command with other arch, you can run it as normal. For example, if you need pull image from arm (such as new Mac M1 chip), you can run `docker pull alpine/git:v2.30.2` to get the image directly.

### Github Repo

https://github.com/alpine-docker/git

### CI build logs

https://github.com/alpine-docker/git/actions

### Docker image tags

https://hub.docker.com/r/alpine/git/tags/

### Usage

docker run -ti --rm -v ${HOME}:/root -v $(pwd):/git alpine/git

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

### Optional usage 1:

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

### Optional usage 2:

alias git="docker run -ti --rm -v $(pwd):/git -v $HOME/.ssh:/root/.ssh alpine/git"

#### NOTES:

- 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.

### Optional usage 3:

alias git='docker run -ti --rm -u$(id -u):$(id -g) -e HOME=${HOME} -v /etc/passwd:/etc/passwd -v /etc/group:/etc/group -v ${HOME}:${HOME} -v $(pwd):/git alpine/git'

### NOTES:

- set uid:gid and provide passwd and group from host
- run git as the current user instead of root for proper ownership of files
- can be used at any directory as evaluation of $(pwd) is defered until alias is used

## Demo

$ 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

### The Protocols

Supports git, http/https and ssh protocols.

Refer:
[Git on the Server - The Protocols](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols)

### Automation builds

Set CI to run builds per week

- build latest alpine image with multi-arch supported
- Get the git version from the image
- use the git's version as image tag as well (`v${GIT_VERSION}`)
- update `latest` tag for this image