CEikermann / bitnami-compat

A workaround for bitnami chart arm64

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bitnami-Compat

Inactively Maintained Project-Stage Production Ready Update bitnami-dockers Build Testing

What is Bitnami-Compat?

  • This repository builds multi-arch (linux/amd64 + linux/arm64) docker images for some bitnami charts.

  • This is a workaround for bitnami/charts#7305.

  • These images are NOT intended for production use.

    • This repository cannot be stable. Changes in multiple repositories (apt, bitnami, etc...) are reflected so images can break at any time.
    • This repository is mainly maintained for my homelab and development.
  • This repository does not support all bitnami images.

    • I believe that someday bitnami will support arm64.
    • I don't use all images from bitnami.
    • I prefer database or other development tools, not for general apps. (e.g. wordpress, odoo, discourse, ...)
    • For general apps, if arm64 is already supported (not for bitnami), I recommended to use it. This repository's may not reach production ready.
    • If anyone wants to make an image patch themselves, I can help with that. Please make an issue.
  • These images use Bitnami's scripts. Binaries refer to the official Docker or official distribution binaries of the software or Docker recipes for Docker.

Update bitnami-dockers schedule

  • Every friday.

  • ⚠️ Recently deleted for old images older than 30 days.

    • I think I'm using too much storage (I'm GitHub Free plan user...), so I'm cleaning it up. In the case of an old image, it may have been deleted, and in that case, a manifest unknown error occurs when docker pull is performed. Since this is a multi-arch image, the layer connected to the tag is deleted and only the manifest remains.

Usage #1

  • I know I can't make the images in this repository trustworthy, and I know I can't fix it. This repository is just a personal repository.

  • If you want to use the images, It is recommended not to use the image directly, but to create Dockerfile.arm64 by following the instructions below and then verify and use it.

  • Create Dockerfile.arm64 for bitnami-dockers

    1. install task https://taskfile.dev/installation/
    2. install golang https://go.dev/doc/install
    3. clone
    git clone https://github.com/ZCube/bitnami-compat
    cd bitnami-compat
    task generate
    or
    go run main.go generate --app=mongodb
    1. verify Dockerfile.arm64. Official images or build scripts referenced for build are listed in the table below.
    2. build & use. (docker buildx needed)
    task build
    or (current platform only)
    go run main.go build --app=mongodb --tag ghcr.io/zcube/bitnami-compat/
    or (current platform only && push)
    go run main.go build --app=mongodb --tag ghcr.io/zcube/bitnami-compat/ --push
    or (docker buildx needed && push)
    go run main.go build --app=mongodb --tag ghcr.io/zcube/bitnami-compat/ --push --platforms=linux/amd64,linux/arm64 
    
    docker run --rm -ti ghcr.io/zcube/bitnami-compat/mongodb:6.0
    
  • PS. Rabbitmq and fluentd builds are too long. Depending on the machine, it is best to prepare for 1-2 hours.

Usage #2

  • TL;DR

from

image:
  registry: docker.io
  repository: bitnami/postgresql
  tag: 11.16.0-debian-11-r14

to

image:
  registry: ghcr.io
  repository: zcube/bitnami-compat/postgresql
  tag: 11.16.0-debian-11-r15

Supported bitnami charts

✔️  cert-manager
✔️  common
✔️  consul
✔️  contour
✔️  contour-operator
✔️  discourse
✔️  elasticsearch
✔️  etcd
✔️  external-dns
✔️  fluentd
✔️  kafka
✔️  keycloak
✔️  mariadb
✔️  mariadb-galera
✔️  memcached
✔️  minio
✔️  mongodb
✔️  mongodb-sharded
✔️  mysql
✔️  nginx
✔️  node
✔️  postgresql
✔️  postgresql-ha
✔️  rabbitmq
✔️  rabbitmq-cluster-operator
✔️  redis
✔️  redis-cluster
✔️  sealed-secrets
✔️  solr
✔️  thanos
✔️  tomcat
✔️  wordpress
✔️  zookeeper
❓  apache
  ❌  apache
  ✔️  git
  ✔️  apache-exporter
❓  nginx-ingress-controller
  ❌  nginx-ingress-controller
  ✔️  nginx
❓  nginx-intel
  ❌  nginx-intel
  ✔️  git
  ✔️  nginx-exporter
❓  wordpress-intel
  ❌  wordpress-intel
  ✔️  bitnami-shell
  ✔️  nginx-exporter
  • For wordpress-intel charts, try using wordpress-nginx instead of wordpress-intel images. (wordpress-intel = wordpress-nginx)

Binary References

Package Type Reference Base
acmesolver DockerImage https://quay.io/jetstack/cert-manager-acmesolver bitnami/minideb
cainjector DockerImage https://quay.io/jetstack/cert-manager-cainjector bitnami/minideb
cert-manager DockerImage https://quay.io/jetstack/cert-manager-controller bitnami/minideb
cert-manager-webhook DockerImage https://quay.io/jetstack/cert-manager-webhook bitnami/minideb
consul DockerImage https://hub.docker.com/_/consul bitnami/minideb
consul-exporter Dockerfile https://hub.docker.com/r/prom/consul-exporter bitnami/minideb
elasticsearch Install https://www.elastic.co/guide/en/elasticsearch/reference/current/targz.html bitnami/minideb
etcd Dockerfile https://gcr.io/etcd-development/etcd bitnami/minideb
fluentd Dockerfile https://github.com/fluent/fluentd-docker-image bitnami/minideb
jmx-exporter Install https://repo1.maven.org/maven2/io/prometheus/jmx bitnami/minideb
kafka Install https://downloads.apache.org/kafka bitnami/minideb
kubectl Install https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/ bitnami/minideb
keycloak Dockerfile https://github.com/keycloak/keycloak-containers bitnami/minideb
mariadb Dockerfile https://github.com/MariaDB/mariadb-docker bitnami/minideb
mariadb-galera Dockerfile https://github.com/MariaDB/mariadb-docker bitnami/minideb
memcached Dockerfile https://github.com/docker-library/memcached bitnami/minideb
minio DockerImage https://hub.docker.com/r/minio/minio bitnami/minideb
minio-client DockerImage https://hub.docker.com/r/minio/mc bitnami/minideb
mongodb Dockerfile https://github.com/docker-library/mongo bitnami/minideb
mysql DockerImage https://hub.docker.com/r/mysql mysql/mysql-server
mysqld-exporter Dockerfile https://hub.docker.com/r/prom/mysqld-exporter bitnami/minideb
nginx Dockerfile https://github.com/nginxinc/docker-nginx bitnami/minideb
pgpool Dockerfile https://github.com/docker-library/postgres bitnami/minideb
postgresql Dockerfile https://github.com/docker-library/postgres bitnami/minideb
postgresql-repmgr Dockerfile https://github.com/docker-library/postgres bitnami/minideb
rabbitmq Dockerfile https://github.com/docker-library/rabbitmq bitnami/minideb
redis Dockerfile https://github.com/docker-library/redis bitnami/minideb
redis-cluster Dockerfile https://github.com/docker-library/redis bitnami/minideb
redis-exporter DockerImage https://hub.docker.com/r/oliver006/redis_exporter bitnami/minideb
redis-sentinel Dockerfile https://github.com/docker-library/redis bitnami/minideb
tomcat Install https://downloads.apache.org/tomcat bitnami/minideb
wordpress bitnami/minideb
zookeeper Install https://downloads.apache.org/zookeeper bitnami/minideb

Supported images and tags

Install Task

sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin

List docker image patch status

go run main.go list
...
✔️  mongodb:5.0.9
✔️  mongodb-exporter:0.33.0
❌  mysql:5.7.38
  ❌  mysql.5.7.38-150
✔️  mysql:8.0.29
✔️  mysqld-exporter:0.14.0
❌  nginx:1.21.6
  ❌  nginx.1.21.6-153
❌  nginx:1.22.0
  ❌  nginx.1.22.0-153
✔️  nginx:1.23.0
...

Generate Dockerfile.arm64

task generate

Upgrade bitnami docker repositories

task upgrade

How to add a new image

Example : mariadb/10.8

  1. Add submodule
cd bitnami-dockers
git submodule add https://github.com/bitnami/bitnami-docker-mariadb
cd ..
go run main.go makeDirs
  1. Write build scripts
  • patches/golang/mariadb/10.8/install.sh
  • patches/docker/mariadb/10.8/Dockerfile.from
  • patches/docker/mariadb/10.8/Dockerfile.install
  • patches/bash/mariadb/10.8/install.sh
  1. Apply and test
task generate
cd bitnami-dockers/bitnami-docker-mariadb/10.8/debian-11
docker buildx create --name multiarchbuilder
docker buildx inspect multiarchbuilder --bootstrap
docker buildx use multiarchbuilder
docker buildx build --platform linux/amd64,linux/arm64 -t testimage . -f Dockerfile.arm64
docker run --rm -ti testimage

Compatible Images for Bitnami Charts

  • Recommended for production use.
Charts Image Status
thanos docker.io/thanosio/thanos:v0.27.0 Official images are compatible.
external-dns registry.k8s.io/external-dns/external-dns:v0.12.2 Official images are compatible.

Todo list

  • Create Containers manifest.
  • Version check tool for compatible images.
  • [*] Trivy scan.
  • Minimal tests. ( like : kubectl version --client=true, docker compose up )
  • Add Release branches & tags. ( weekly?, monthly? )
  • Faster build for multistaged images.
  • Split app patches and components patches.
  • Render Dockerfile.arm64 to repository.
  • Get an Arm64 machine for build and testing.
  • Remove unused apps.
  • Improve Readme template.
  • [*] Add docker labels for notice.

License

Apache 2.0

License for generator (Golang scripts)

MIT License

License for patches

check References

License for Bitnami docker scripts

Apache 2.0

Warning

This repository contains sources, binaries and recipes from Bitnami and other software. Each software has its own license.

This repository lacks support for production use.

This repository is provided as is.

It might be dangerous for production use. Use after testing

About

A workaround for bitnami chart arm64

License:Apache License 2.0


Languages

Language:Go 65.4%Language:Shell 34.4%Language:Dockerfile 0.2%