• Stars
    star
    150
  • Rank 247,323 (Top 5 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Unofficial tools to build Bitnami containers using open source to support Bitnami charts (Arm64 support)

Bitnami-Compat

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

What is Bitnami-Compat?

Goal

  • Build https://github.com/bitnami/containers

    • Support Arm64.
    • Comment StackSmith download scripts.
    • Patch with component-based build script.
    • Synchronize with Bitnami containers version.
    • Build and deploy using Github Actions.
    • Listing supported images.
  • Support https://github.com/bitnami/charts

    • Support Arm64.
    • Generate image patch values files.
    • Listing supported charts.
    • Helm chart testing using Github Actions.
      • Goss
      • Cypress
      • Ginko
    • Helm chart test with multiple images.
      • Bitnami Amd64
      • Bitnami-compat Amd64
      • Bitnami-compat Arm64 (Mac Mini M1)
      • Official image Amd64
      • Official image Arm64

Not Goal

  • Support every images and charts on Bitnami's

    • Can't afford the time and cost of development and maintenance.
  • Production ready or commercial support.

    • This repository is just open source and maintained by very few people.

More detail

Update bitnami-dockers schedule

  • day-of-month 1 in every 2nd month

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

or

curl -LO https://raw.githubusercontent.com/ZCube/bitnami-compat/main/values/values_bitnami_compat_postgresql.yaml
helm install db bitnami/postgresql -f values_bitnami_compat_postgresql.yaml

Test

  • https://github.com/ZCube/bitnami-compat-test

  • legend

    • O : test pass
    • X : test pass fail
    • Empty : not tested
  • note

    • cypress v9 does not support arm64 so amd64 machine with ssh, docker needed to test.
    • arm64 test was done on mac mini m1
  • result

    App Tests bitnami (amd64) bitnami-compat (amd64) bitnami-compat (arm64) official (amd64) official (arm64) official link
    apache Goss ✔️ ✔️ ✔️
    apache Cypress ✔️ ✔️ ✔️
    cert-manager Goss ✔️ ✔️ ✔️
    consul Goss ✔️ ✔️ ✔️
    consul Cypress ✔️ ✔️ ✔️
    contour Goss ✔️ ✔️ ✔️
    discourse Goss ✔️ ✔️ ✔️
    discourse Cypress ✔️ ✔️ ✔️
    elasticsearch Goss ✔️ ✔️ ✔️
    elasticsearch Cypress ✔️ ✔️ ✔️
    etcd Goss ✔️ ✔️ ✔️
    external-dns Goss ✔️ ✔️ ✔️
    fluentd Goss ✔️ ✔️ ✔️
    gitea Goss ✔️ ✔️ ✔️
    gitea Cypress ✔️ ✔️ ✔️
    kafka Goss ✔️ ✔️ ✔️
    keycloak Goss ✔️ ✔️ ✔️
    keycloak Cypress ✔️ ✔️ ✔️
    mariadb Goss ✔️ ✔️ ✔️
    mariadb-galera Goss ✔️ ✔️ ✔️
    mastodon Goss ✔️ ✔️ ✔️
    mastodon Cypress ✔️ ✔️
    memcached Goss ✔️ ✔️ ✔️
    minio Goss ✔️ ✔️ ✔️
    minio Cypress ✔️ ✔️ ✔️
    mongodb Goss ✔️ ✔️ ✔️
    mongodb-sharded Goss ✔️ ✔️ ✔️
    mysql Goss ✔️ ✔️ ✔️
    nginx Goss ✔️ ✔️ ✔️
    nginx Cypress ✔️ ✔️ ✔️
    postgresql Goss ✔️ ✔️ ✔️
    postgresql-ha Goss ✔️ ✔️ ✔️
    rabbitmq Goss ✔️ ✔️ ✔️
    rabbitmq Cypress ✔️ ✔️ ✔️
    rabbitmq-cluster-operator Goss ✔️ ✔️ ✔️
    rabbitmq-cluster-operator Cypress ✔️ ✔️ ✔️
    redis Goss ✔️ ✔️ ✔️
    redis-cluster Goss ✔️ ✔️ ✔️
    sealed-secrets Cypress ✔️ ✔️ ✔️
    solr Goss ✔️ ✔️ ✔️
    solr Cypress ✔️ ✔️ ✔️
    tomcat Goss ✔️ ✔️ ✔️
    tomcat Cypress ✔️ ✔️ ✔️
    wordpress Goss ✔️ ✔️ ✔️
    wordpress Cypress ✔️ ✔️ ✔️
    zookeeper Goss ✔️ ✔️ ✔️

Supported bitnami charts

* ✔️  apache
* ✔️  cert-manager
* ✔️  common
* ✔️  consul
* ✔️  contour
* ✔️  contour-operator
* ✔️  discourse
* ✔️  elasticsearch
* ✔️  etcd
* ✔️  external-dns
* ✔️  fluentd
* ✔️  gitea
* ✔️  kafka
* ✔️  keycloak
* ✔️  kibana
* ✔️  kube-state-metrics
* ✔️  kubernetes-event-exporter
* ✔️  logstash
* ✔️  mariadb
* ✔️  mariadb-galera
* ✔️  mastodon
* ✔️  memcached
* ✔️  minio
* ✔️  mongodb
* ✔️  mongodb-sharded
* ✔️  mysql
* ✔️  nginx
* ✔️  node-exporter
* ✔️  postgresql
* ✔️  postgresql-ha
* ✔️  rabbitmq
* ✔️  rabbitmq-cluster-operator
* ✔️  redis
* ✔️  redis-cluster
* ✔️  sealed-secrets
* ✔️  solr
* ✔️  thanos
* ✔️  tomcat
* ✔️  wordpress
* ✔️  zookeeper
* ❌  grafana
  * ✔️  grafana
  * ❌  grafana-image-renderer
  * ✔️  bitnami-shell
* ❌  grafana-loki
  * ❌  grafana-loki
  * ✔️  nginx
  * ❌  promtail
  * ✔️  bitnami-shell
  * ✔️  memcached
  * ✔️  memcached
  * ✔️  memcached
  * ✔️  memcached
* ❌  grafana-operator
  * ❌  grafana-operator
  * ✔️  grafana
* ❌  grafana-tempo
  * ❌  grafana-tempo
  * ❌  grafana-tempo-query
  * ❌  grafana-tempo-vulture
  * ✔️  bitnami-shell
* ❌  nginx-ingress-controller
  * ❌  nginx-ingress-controller
  * ✔️  nginx
  • 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

This section has moved to the Wiki.

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.

License

Apache 2.0

Copyright © 2023 ZCube([email protected])

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

License for generator (Golang scripts)

MIT License

License for patches

check References

License for Bitnami's code.

https://github.com/bitnami/charts

https://github.com/bitnami/containers

Copyright © 2023 Bitnami

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.