Docker image with cgit dark-mode and gitolite running on top of alpine base image
1.6K
rusian/gitolite-cgit is a Docker image with cgit in dark-mode and gitolite running on top of alpine base image.

docker pull rusian/gitolite-cgit
docker run -e SSH_KEY="$(cat ~/.ssh/id_ed25519.pub)" -e SSH_KEY_NAME="$(whoami)" -p 22:22 -p 80:80 -p 9418:9418 -v repo:/var/lib/git rusian/gitolite-cgit
SSH_KEY: Public key of gitolite adminSSH_KEY_NAME: Name of gitolite adminCGIT_CLONE_PREFIX: cgit clone prefix to display on each repository. For example: https://git.example.com, the clone URL should be: ssh://[email protected]CGIT_ROOT_TITLE: Text printed as heading on the repository index page. Default value: "Git Repository Browser".CGIT_DESC: Add description to cgitCGIT_SNAPSHOT: Snapshot tarball./var/lib/git: gitolite home folder, store all repositories, gitolite-admin repo, .../etc/ssh/: store all generated SSH server keyCgit webpage: http://<server_ip>/
Supported clone method:
gitolite-admin. For more information, pls refer to basic administration. Syntax: git clone ssh://git@<server_ip>/<repo_name>enable-http-clone=1 by default, which let cgit act as a dumb HTTP enpoint for git clones. You can disable that by edit /etc/cgitrc. I may consider to add more feature, so you can set config from docker run or docker-compose.yml. git push is not supported via HTTP at this moment. Syntax: git clone http://<server_ip>/<repo_name>git daemon is enabled by default with upload-pack service (this serves git fetch-pack and git ls-remote clients), allowing anonymous fetch, clone. Syntax: git clone git://<server_ip>/<repo_path>docker pull rusian/gitolite-cgit
In this repo, I create gitolite admin with the host public key and username. In case, you are running this on server, you need to enter SSH_KEY and SSH_KEY_NAME into config.env:
#
# Gitolite options
#
SSH_KEY=<your public key content>
SSH_KEY_NAME=<your gitolite name>
#
# Cgit options
#
CGIT_ROOT_TITLE=Git Repository Browser
CGIT_DESC=a fast webinterface for the git dscm
CGIT_CLONE_PREFIX=http://<YOUR-DOMAIN> ssh://git@<YOUR-DOMAIN>
CGIT_SNAPSHOT=tar.gz tar.bz2 tar.xz
For convience, I create a script for user who use the public key and name from the host running Docker:
# change ssh_key, ssh_key_name to reflect your current setup
SSH_KEY=$(cat ~/.ssh/id_ed25519.pub)
SSH_KEY_NAME=$(whoami)
sed -i.bak \
-e "s#SSH_KEY=.*#SSH_KEY=${SSH_KEY}#g" \
-e "s#SSH_KEY_NAME=.*#SSH_KEY_NAME=${SSH_KEY_NAME}#g" \
"$(dirname "$0")/config.env"
docker-compose.yml:version: '3'
services:
app:
image: rusian/gitolite-cgit
container_name: gitolite-cgit
env_file: config.env
volumes:
- git:/var/lib/git
ports:
- 22:22
- 80:80
- 9418:9418
tty: true
volumes:
git:
Then power-on your container:
docker-compose up -d
As there are many cgit configuration, you can create cgitrc configure and map to /etc/cgitrc
# Copy cgitrc from existing container
docker cp gitolite-cgit:/etc/cgitrc .
Modify the docker-compose.yml:
version: '3'
services:
app:
image: rusian/gitolite-cgit
container_name: gitolite-cgit
env_file: config.env
volumes:
- git:/var/lib/git
- ./cgitrc:/etc/cgitrc
ports:
- 22:22
- 80:80
- 9418:9418
tty: true
volumes:
git:
docker build --no-cache --tag rusian/gitolite-cgit -f gitolite-cgit/Dockerfile gitolite-cgit
Content type
Image
Digest
sha256:7d8c91e7c…
Size
40.5 MB
Last updated
over 1 year ago
docker pull rusian/gitolite-cgit