![](https://raw.githubusercontent.com/Dockershelf/dockershelf/develop/images/banner.svg) --- [![](https://img.shields.io/github/release/Dockershelf/dockershelf.svg)](https://github.com/Dockershelf/dockershelf/releases) [![](https://img.shields.io/github/actions/workflow/status/Dockershelf/dockershelf/schedule-master.yml)](https://github.com/Dockershelf/dockershelf/actions/workflows/schedule-master.yml) [![](https://img.shields.io/discord/809504357359157288.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/4Wc7xphH5e) [![](https://cla-assistant.io/readme/badge/Dockershelf/dockershelf)](https://cla-assistant.io/Dockershelf/dockershelf) Current version: 4.0.0 *Dockershelf* is a repository that serves as a collector for docker recipes that are universal, efficient and slim. We keep adding "shelves", which are holders for the different versions of a popular language or application. Images are updated, tested and published *weekly* via a [Github Actions workflow](https://github.com/Dockershelf/dockershelf/actions). All images are available on [Docker Hub](https://hub.docker.com/u/dockershelf). Excepting debian and latex images, all images have an stable/unstable version. Stable images are based on debian stable, which are ideal for production applications because packages are not updated to minor or major versions but still recieve security updates. Unstable images are based on debian sid, which are designed for development stages because packages are constantly beaing updated to its latest version. Latex images are only based on debian stable. Images are built for `amd64` and `arm64` architectures, which cover most of the devices in the market. If you need an image for a different architecture, please [open an issue](https://github.com/Dockershelf/dockershelf/issues/new). The list of available images is shown below. |Image type|Tags| |------------|------| |[dockershelf/debian](#debian)|`bookworm`, `oldstable`, `trixie`, `stable`, `forky`, `testing`, `sid`, `unstable`, `latest`| |[dockershelf/python](#python)|`3.10-trixie`, `3.10-stable`, `3.10-sid`, `3.10-unstable`, `3.10`, `3.11-trixie`, `3.11-stable`, `3.11-sid`, `3.11-unstable`, `3.11`, `3.12-trixie`, `3.12-stable`, `3.12-sid`, `3.12-unstable`, `3.12`, `3.13-trixie`, `3.13-stable`, `3.13-sid`, `3.13-unstable`, `3.13`, `3.14-trixie`, `3.14-stable`, `3-stable`, `3-trixie`, `latest-stable`, `latest-trixie`, `3.14-sid`, `3.14-unstable`, `3.14`, `3-unstable`, `3-sid`, `3`, `latest-unstable`, `latest-sid`, `latest`| |[dockershelf/node](#node)|`18-trixie`, `18-stable`, `18-sid`, `18-unstable`, `18`, `20-trixie`, `20-stable`, `20-sid`, `20-unstable`, `20`, `22-trixie`, `22-stable`, `22-sid`, `22-unstable`, `22`, `24-trixie`, `24-stable`, `24-sid`, `24-unstable`, `24`, `26-trixie`, `26-stable`, `latest-stable`, `latest-trixie`, `26-sid`, `26-unstable`, `26`, `latest-unstable`, `latest-sid`, `latest`| |[dockershelf/go](#go)|`1.22-trixie`, `1.22-stable`, `1.22-sid`, `1.22-unstable`, `1.22`, `1.23-trixie`, `1.23-stable`, `1.23-sid`, `1.23-unstable`, `1.23`, `1.24-trixie`, `1.24-stable`, `1.24-sid`, `1.24-unstable`, `1.24`, `1.25-trixie`, `1.25-stable`, `1.25-sid`, `1.25-unstable`, `1.25`, `1.26-trixie`, `1.26-stable`, `latest-stable`, `latest-trixie`, `1.26-sid`, `1.26-unstable`, `1.26`, `latest-unstable`, `latest-sid`, `latest`| |[dockershelf/latex](#latex)|`basic`, `basic-stable`, `latest-stable`, `latest`, `full`, `full-stable`, `extras`, `extras-stable`| ## How to use You can pull one of the images from Docker Hub and run it in your machine. ``` docker pull docker run -it bash ``` <image> is the desired image to download, for example dockershelf/python:3.11. or you can use it as a base image in your Dockerfile. ```dockerfile FROM dockershelf/debian:bookworm RUN apt-get update \ && apt-get install -y mysql-client ENTRYPOINT ["mysql"] ``` ## Shelves ### Debian These images are similar to the official ones, but with some opinionated configurations. Check out [debian/README.md](https://github.com/Dockershelf/dockershelf/blob/master/debian/README.md) for more details. |Image|Dockerfile|Pulls|Size| |-------|------------|--------|------| |[`dockershelf/debian:bookworm`](https://hub.docker.com/r/dockershelf/debian)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/debian/bookworm/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/debian?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/debian)|[![](https://img.shields.io/docker/image-size/dockershelf/debian/bookworm.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/debian)| |[`dockershelf/debian:trixie`](https://hub.docker.com/r/dockershelf/debian)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/debian/trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/debian?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/debian)|[![](https://img.shields.io/docker/image-size/dockershelf/debian/trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/debian)| |[`dockershelf/debian:forky`](https://hub.docker.com/r/dockershelf/debian)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/debian/forky/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/debian?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/debian)|[![](https://img.shields.io/docker/image-size/dockershelf/debian/forky.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/debian)| |[`dockershelf/debian:sid`](https://hub.docker.com/r/dockershelf/debian)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/debian/sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/debian?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/debian)|[![](https://img.shields.io/docker/image-size/dockershelf/debian/sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/debian)| ![](https://raw.githubusercontent.com/Dockershelf/dockershelf/develop/images/table.svg) ### Python These are debian stable/unstable images with python versions installed from the [Dockershelf APT repository](https://apt.dockershelf.com/dockershelf). Check out [python/README.md](https://github.com/Dockershelf/dockershelf/blob/master/python/README.md) for more details. |Image|Dockerfile|Pulls|Size| |-------|------------|--------|------| |[`dockershelf/python:3.10-trixie`](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/python/3.10-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/python?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/docker/image-size/dockershelf/python/3.10-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)| |[`dockershelf/python:3.10-sid`](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/python/3.10-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/python?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/docker/image-size/dockershelf/python/3.10-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)| |[`dockershelf/python:3.11-trixie`](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/python/3.11-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/python?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/docker/image-size/dockershelf/python/3.11-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)| |[`dockershelf/python:3.11-sid`](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/python/3.11-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/python?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/docker/image-size/dockershelf/python/3.11-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)| |[`dockershelf/python:3.12-trixie`](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/python/3.12-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/python?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/docker/image-size/dockershelf/python/3.12-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)| |[`dockershelf/python:3.12-sid`](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/python/3.12-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/python?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/docker/image-size/dockershelf/python/3.12-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)| |[`dockershelf/python:3.13-trixie`](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/python/3.13-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/python?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/docker/image-size/dockershelf/python/3.13-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)| |[`dockershelf/python:3.13-sid`](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/python/3.13-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/python?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/docker/image-size/dockershelf/python/3.13-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)| |[`dockershelf/python:3.14-trixie`](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/python/3.14-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/python?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/docker/image-size/dockershelf/python/3.14-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)| |[`dockershelf/python:3.14-sid`](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/python/3.14-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/python?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)|[![](https://img.shields.io/docker/image-size/dockershelf/python/3.14-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/python)| ![](https://raw.githubusercontent.com/Dockershelf/dockershelf/develop/images/table.svg) ### Node These are debian stable/unstable images with node versions installed from the [Dockershelf APT repository](https://apt.dockershelf.com/dockershelf). Check out [node/README.md](https://github.com/Dockershelf/dockershelf/blob/master/node/README.md) for more details. |Image|Dockerfile|Pulls|Size| |-------|------------|--------|------| |[`dockershelf/node:18-trixie`](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/node/18-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/node?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/docker/image-size/dockershelf/node/18-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)| |[`dockershelf/node:18-sid`](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/node/18-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/node?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/docker/image-size/dockershelf/node/18-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)| |[`dockershelf/node:20-trixie`](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/node/20-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/node?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/docker/image-size/dockershelf/node/20-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)| |[`dockershelf/node:20-sid`](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/node/20-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/node?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/docker/image-size/dockershelf/node/20-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)| |[`dockershelf/node:22-trixie`](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/node/22-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/node?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/docker/image-size/dockershelf/node/22-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)| |[`dockershelf/node:22-sid`](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/node/22-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/node?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/docker/image-size/dockershelf/node/22-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)| |[`dockershelf/node:24-trixie`](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/node/24-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/node?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/docker/image-size/dockershelf/node/24-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)| |[`dockershelf/node:24-sid`](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/node/24-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/node?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/docker/image-size/dockershelf/node/24-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)| |[`dockershelf/node:26-trixie`](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/node/26-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/node?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/docker/image-size/dockershelf/node/26-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)| |[`dockershelf/node:26-sid`](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/node/26-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/node?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)|[![](https://img.shields.io/docker/image-size/dockershelf/node/26-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/node)| ### Go These are debian stable/unstable images with go versions installed from the [Dockershelf APT repository](https://apt.dockershelf.com/dockershelf). Check out [go/README.md](https://github.com/Dockershelf/dockershelf/blob/master/go/README.md) for more details. |Image|Dockerfile|Pulls|Size| |-------|------------|--------|------| |[`dockershelf/go:1.22-trixie`](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/go/1.22-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/go?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/docker/image-size/dockershelf/go/1.22-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)| |[`dockershelf/go:1.22-sid`](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/go/1.22-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/go?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/docker/image-size/dockershelf/go/1.22-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)| |[`dockershelf/go:1.23-trixie`](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/go/1.23-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/go?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/docker/image-size/dockershelf/go/1.23-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)| |[`dockershelf/go:1.23-sid`](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/go/1.23-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/go?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/docker/image-size/dockershelf/go/1.23-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)| |[`dockershelf/go:1.24-trixie`](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/go/1.24-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/go?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/docker/image-size/dockershelf/go/1.24-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)| |[`dockershelf/go:1.24-sid`](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/go/1.24-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/go?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/docker/image-size/dockershelf/go/1.24-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)| |[`dockershelf/go:1.25-trixie`](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/go/1.25-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/go?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/docker/image-size/dockershelf/go/1.25-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)| |[`dockershelf/go:1.25-sid`](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/go/1.25-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/go?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/docker/image-size/dockershelf/go/1.25-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)| |[`dockershelf/go:1.26-trixie`](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/go/1.26-trixie/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/go?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/docker/image-size/dockershelf/go/1.26-trixie.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)| |[`dockershelf/go:1.26-sid`](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/go/1.26-sid/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/go?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)|[![](https://img.shields.io/docker/image-size/dockershelf/go/1.26-sid.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/go)| ![](https://raw.githubusercontent.com/Dockershelf/dockershelf/develop/images/table.svg) ### Latex These are debian stable images that come with a set of latex (basic, full, or extras) packages installed. Check out [latex/README.md](https://github.com/Dockershelf/dockershelf/blob/master/latex/README.md) for more details. |Image|Dockerfile|Pulls|Size| |-------|------------|--------|------| |[`dockershelf/latex:basic`](https://hub.docker.com/r/dockershelf/latex)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/latex/basic/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/latex?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/latex)|[![](https://img.shields.io/docker/image-size/dockershelf/latex/basic.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/latex)| |[`dockershelf/latex:full`](https://hub.docker.com/r/dockershelf/latex)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/latex/full/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/latex?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/latex)|[![](https://img.shields.io/docker/image-size/dockershelf/latex/full.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/latex)| |[`dockershelf/latex:extras`](https://hub.docker.com/r/dockershelf/latex)|[![](https://img.shields.io/badge/-Dockerfile-blue.svg?colorA=22313f&colorB=4a637b&logo=docker)](https://github.com/Dockershelf/dockershelf/blob/master/latex/extras/Dockerfile)|[![](https://img.shields.io/docker/pulls/dockershelf/latex?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/latex)|[![](https://img.shields.io/docker/image-size/dockershelf/latex/extras.svg?colorA=22313f&colorB=4a637b)](https://hub.docker.com/r/dockershelf/latex)| ![](https://raw.githubusercontent.com/Dockershelf/dockershelf/develop/images/table.svg) ## How to build locally Clone this repository to your machine. ``` git clone https://github.com/Dockershelf/dockershelf ``` Run the build script in the root folder of your local copy. Remember to have docker installed and make sure your user has proper privileges to execute `docker build`. ``` bash build-image.sh ``` <image> is the desired image to build, for example dockershelf/node:16-bookworm. ## Maintainer development Docker-backed workflow for regenerating shelves and running maintenance tools: ```bash cp .env.example .env # when using build-all-images.sh or delete-stale.sh make image make start make console # shell inside dev container make update-shelves # regenerate Dockerfiles, README tables, CI matrices make discover-shelves # list upstream shelf versions make dependencies # install Ruby test gems (vendor/bundle) ``` Host-only Python (no Docker): ```bash make virtualenv ./virtualenv/bin/python3 update.py ``` ## Testing **Unit tests and style (Docker):** ```bash make lint make format make test ``` **Shelf regeneration:** after shelf changes, run `make update-shelves` or `python3 update.py` locally and confirm it completes without errors. Pull requests build the development image and run `make dependencies` plus `make build` (see `.github/workflows/pr.yml`). Image specs use Ruby (RSpec) in shelf `test-image.rb` files; run relevant tests when changing Docker recipes. ## Contributing See [CONTRIBUTING.md](CONTRIBUTING.md). Report issues at [github.com/Dockershelf/dockershelf/issues](https://github.com/Dockershelf/dockershelf/issues). ## Releases Changelog: [HISTORY.md](HISTORY.md). GitHub release blurbs: [RELEASE_DESCRIPTION.md](RELEASE_DESCRIPTION.md). Maintainers use `make release-patch`, `make release-minor`, `make release-major`, and `make undo-release` (see [MAINTAINER.md](MAINTAINER.md)). ## Made with ๐Ÿ’– and ๐Ÿ” ![Banner](https://raw.githubusercontent.com/Dockershelf/dockershelf/develop/images/author-banner.svg) > Web [luisalejandro.org](http://luisalejandro.org/) ยท GitHub [@LuisAlejandro](https://github.com/LuisAlejandro) ยท Twitter [@LuisAlejandro](https://twitter.com/LuisAlejandro)