Skip to content
Container images created with Bazel
Starlark Shell Dockerfile Python Scala JavaScript Other
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
base
cassandra
deps/buster
dnsmasq
ejabberd
elasticsearch
erlang
gerrit
grafana
jasper
java
jenkins
kafka
kibana
macros
maven
nexus
nginx
nodejs
pentaho/data_integration
php
postgresql
prometheus
rabbitmq
redis
sbt
scripts
test
tomcat
tools
zipkin
zookeeper
.gitignore
.travis.yml
BUILD
LICENSE
README.md
WORKSPACE
shellcheck.sh

README.md

Container images built using Bazel. Benefits include reproducibility, rebuild speed, composability.

To use as a base

Choose a commit and add the below to your WORKSPACE file:

git_repository(
  name = "containers_by_bazel",
  remote = "https://github.com/guymers/containers_by_bazel.git",
  commit = "<commit-id>",
)

load("//scripts:repositories.bzl", "dependency_repositories")
dependency_repositories()

load("@bazel_rules_container_test//container:repositories.bzl", container_test_repositories = "repositories")
container_test_repositories()

load("@io_bazel_rules_docker//repositories:repositories.bzl", docker_rules_repositories = "repositories")
docker_rules_repositories()

load("@io_bazel_rules_docker//repositories:deps.bzl", docker_rules_deps = "deps")
docker_rules_deps()

Using containers

Create a BUILD file and use the name of the git repository prefixed with a @.

container_image(
  name = "jenkins_with_plugins",
  base = "@containers_by_bazel//jenkins",
  ...
)

Custom Debian dependencies

Create a BUILD file with the contents:

load("@containers_by_bazel//scripts/debian:dependencies.bzl", "dependencies")

dependencies(
  name = "",
  dependencies = glob(["dependencies/*"]),
  target_prefix = "@containers_by_bazel"
)

Where the dependencies folder contains files in the format of the ones in scripts/debian/dependencies/

Then you'll need to pretty much copy scripts/update_dependencies.sh

To use as is

To create containers

You can use the ./build_container script. It ensures that you cannot override the same tag with a different image.

bazel build //scripts/versions
source ./bazel-bin/scripts/versions/versions.sh
./scripts/build_container.sh //cassandra cassandra ${CASSANDRA_VERSION}
./scripts/build_container.sh //dnsmasq dnsmasq ${DNSMASQ_VERSION}
./scripts/build_container.sh //ejabberd ejabberd ${EJABBERD_VERSION}
./scripts/build_container.sh //elasticsearch elasticsearch ${ELASTICSEARCH_VERSION}
./scripts/build_container.sh //gerrit gerrit ${GERRIT_VERSION}
./scripts/build_container.sh //grafana grafana ${GRAFANA_VERSION}
./scripts/build_container.sh //java:zulu zulu ${JAVA_VERSION}
./scripts/build_container.sh //jenkins jenkins ${JENKINS_VERSION}
./scripts/build_container.sh //jenkins:agent jenkins-agent ${JENKINS_SWARM_VERSION}
./scripts/build_container.sh //kafka kafka ${KAFKA_VERSION}
./scripts/build_container.sh //kibana kibana ${KIBANA_VERSION}
./scripts/build_container.sh //nexus nexus ${NEXUS_VERSION}
./scripts/build_container.sh //nginx nginx ${NGINX_VERSION}
./scripts/build_container.sh //nodejs nodejs ${NODEJS_VERSION}
./scripts/build_container.sh //php php ${PHP_VERSION}
./scripts/build_container.sh //postgresql postgresql ${POSTGRESQL_VERSION}
./scripts/build_container.sh //postgresql:postgis postgis ${POSTGRESQL_VERSION}-${POSTGIS_VERSION}
./scripts/build_container.sh //prometheus prometheus ${PROMETHEUS_VERSION}
./scripts/build_container.sh //rabbitmq rabbitmq ${RABBITMQ_VERSION}
./scripts/build_container.sh //redis redis ${REDIS_VERSION}
./scripts/build_container.sh //sbt sbt ${SBT_VERSION}
./scripts/build_container.sh //zipkin zipkin ${ZIPKIN_VERSION}
./scripts/build_container.sh //zookeeper zookeeper ${ZOOKEEPER_VERSION}

To test:

bazel test //test/...

To update dependencies

Create the docker containers to pull dependency versions from:

DOCKER_NO_CACHE=true ./scripts/docker/create.sh

Update dependencies in files:

./scripts/update_dependencies.sh

Users

911 nexus
912 jenkins
913 tomcat
915 zipkin
916 cassandra
917 elasticsearch
918 kafka
919 zookeeper
921 prometheus
922 grafana
923 kibana
930 nginx
931 redis
938 ejabberd
939 rabbitmq
941 postgres
951 gerrit
You can’t perform that action at this time.