Warning
Please be aware that this repository is fully licensed under the GPLv3.
This repository collects all of my containerization works and serves as a template for quickly starting new projects. These files are extracted from my previous projects, they cannot be used directly. They preserve the unique configurations of the original projects, along with my personal preferences and coding style. Kindly exercise caution when using them.
Repository | Description | Containerfile |
---|---|---|
docker-whisperX | A Dockerfile and CI workflow focus on multi-stage building and optimal cache adjustment. It efficiently builds close to 200 Docker images, each with a size of 10G, on a weekly basis using the GitHub free runner. | 🔗 |
docker-stable-diffusion-webui | Python ML project containerization and Docker build CI workflow fully on the GitHub free runner. The main goal of designing this image is to keep it small and follow best practices. Successfully controlled the size to around 10GB, saving approximately 1/3 of the capacity compared to other existing solutions. | 🔗 |
docker-MSSQL-Server | A MSSQL Server Containerized Backup and Restoration Solution. My team relies on this solution to keep the development databases in sync between dozens of developers. Everyone has their own development database, so we can freely experiment with it without any concerns. | 🔗 |
docker-Oracle-Database | Same as the previous one, but it's for Oracle Database. | |
docker-static-ffmpeg-upx | This is the wader/static-ffmpeg compressed with UPX, makes the binary size reduce to about 26%. I created this image mainly for my other projects that uses static-ffmpeg. Also added the compressed dumb-init since I often use it together. | 🔗 |
docker-infinite-image-browsing | Python pip package containerization with Nuitka compiled to executable and run in a container without the python runtime. | 🔗 |
docker-streamLink | Python pip package containerization. | 🔗 |
docker-yt-dlp | Python pip package containerization. | 🔗 |
docker-ytarchive | Golang containerization with UPX compressed. | 🔗 |
docker-twitcasting-recorder | Python project containerization. | 🔗 |
docker-fc2-live-dl | Python project containerization. | 🔗 |
docker-MoE-LLaVA | Python project containerization with ML dependencies (CUDA, torch). | 🔗 |
docker-SillyTavern | Node.js project containerization + Helm chart. | 🔗 |
YoutubeLiveChatToDiscord | C# .NET 8 project with runtime-deps image + self-contained + publish-trimmed. | 🔗 |
backup-dl | C# .NET 8 project with runtime-deps image + self-contained + publish-trimmed. | 🔗 |
toolbx | Toolbx is a tool for Linux, which allows the use of interactive command line environments for software development and troubleshooting the host operating system, without having to install software on the host. These are my personal Fedora toolbox images, which I use for development and daily usage. | 🔗 |
docker-OpenTelemetry | Docker compose for deploying OpenTelemetry Monitoring Solution with Docker | |
docker-Nextcloud | Docker compose file for Nextcloud. | |
docker-minecraft | Docker compose file for my Minecraft server. Contains a simple solution to deal with the problem of Podman not having GELF log driver. | |
docker-ReverseProxy | Docker compose file for Reverse Proxy with automatic SSL certificate generation. I use it for my personal VPS reverse proxy. | |
Recorder-moe/azure-uploader | Call Azure REST api with shell script in container. | 🔗 |
Recorder-moe/s3-uploader | Use MinIO Client (mc) to upload files to S3 compatible storage. | 🔗 |
Recorder-moe/LivestreamRecorderFrontend | Angular npm build and Nginx unprivileged image. (Closed source) | |
Recorder-moe/LivestreamRecorderBackend | Azure Functions containerization with python, yt-dlp, ffmpeg installed. | 🔗 |
HoloArchivists/twspace-dl | Python project containerization with venv solution. | 🔗 |
bmaltais/kohya_ss | Python project containerization with ML dependencies (CUDA, torch, xformers). I helped this amazing open-source project set up the docker build CI. | 🔗 |
- Docker Docs: Dockerfile Best Practices
- Openshift Docs: Creating images
- IBM Docs: Best practices for designing a universal application image
- Creating the Perfect Python Dockerfile | by Luis Sena | Medium
- Multi-stage builds #2: Python specifics
- To Virtualenv or not to Virtualenv for Docker? This is the question. | by Jarek Potiuk | Medium
This article explains why you should NOT use virtualenv in Docker. - Optimising Python3 with Nuitka and Docker Scratch
Compile Python program to binary with Nuitka and run it in a scratch container.
This means no "entire" Python runtime and dependencies is needed in the final image.
This article demonstrates based on the most basic premise and may require some adjustments in practical applications.
Starting from thedebian:slim
will make life easier. 😉
- How to debug issues with volumes mounted on rootless containers | Enable Sysadmin | Redhat
- Container permission denied: How to diagnose this error | Enable Sysadmin | Redhat
GNU GENERAL PUBLIC LICENSE Version 3
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Caution
A GPLv3 licensed Containerfile means that you MUST distribute the source code with the same license, if you
- Re-distribute the image. (You can simply point to this GitHub repository if you doesn't made any code changes.)
- Distribute a image that uses code from this repository.
- Or distribute a image based on this image. (
FROM ghcr.io/jim60105/Containerfile-template
in your Containerfile)
"Distribute" means to make the image available for other people to download, usually by pushing it to a public registry. If you are solely using it for your personal purposes, this has no impact on you.
Please consult the LICENSE for more details.