• Stars
    star
    115
  • Rank 305,916 (Top 7 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated about 2 months ago

Reviews

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

Repository Details

Set of container images delivered for Quarkus

Quarkus Images

This repository contains the container images used by Quarkus.

Quarkus images

The images are available on Quay.io

To pull these images use:

  • docker pull quay.io/quarkus/ubi-quarkus-graalvmce-builder-image:VERSION
  • docker pull quay.io/quarkus/ubi-quarkus-mandrel-builder-image:VERSION
  • docker pull quay.io/quarkus/ubi-quarkus-graalvmce-s2i:VERSION
  • docker pull quay.io/quarkus/ubi-quarkus-native-binary-s2i:2.0
  • docker pull quay.io/quarkus/quarkus-micro-image:2.0
  • docker pull quay.io/quarkus/quarkus-distroless-image:2.0

with VERSION being the version. The version matches the GraalVM version used in the image, for example: 21.1.0-java11, 21.1.0-java16...

docker pull quay.io/quarkus/ubi-quarkus-native-image:22.1-java17 <-- GraalVM 22.1 with Java 17 (ARM64 / AMD64) 
docker pull quay.io/quarkus/ubi-quarkus-native-image:22.1.0-java17-amd64 <-- GraalVM 22.1 with Java 17 (AMD 64 only)

Navigate to the tag tab on quay.io to see the list of available tabs.

NOTE: You may wonder why we don't use latest. It's because latest has introduced more problems than benefits especially when reproducing issues. For this reason, we recommend using a stable version.

Build Prerequisites

Build

> mvn install

Dockerfiles are created in target/docker.

To skip the image creation (and just create the Dockerfiles), append -Djdock.dry-run=true to the command line: mvn install -Djdock.dry-run=true. The location of each Dockerfile is printed in the log.

LIMITATION: When using the dry-run option with a multi-arch image, only the individual Dockerfiles are dumped on the file system (so, you cannot check the multi-arch manifest).

Push images using:

> mvn install -Ppush

IMPORTANT: You cannot combine -Ppush with the -Djdock.dry-run=true option.

Images

native-image

This image provides GRAALVM and the native-image executable. It is used by the Quarkus Maven plugin and Quarkus Gradle plugin to generate linux 64 executable.

S2I - Source to Image

S2I (Source to Image) are builder images used by OpenShift to build image streams. Two S2I are available:

  • GraalVM Native S2I - build your source code using Maven or Gradle and create a new container image from the produced native executable.
  • Binary S2I - build a new container image from a provided native executable. This executable is generally built on your machine, and uploaded.

Both resulting containers are based on UBI images.

Continuous Integration and Automation

This repository uses GitHub Actions to build the images. On each PR, the images are built. Check the Actions tab in the GitHub project.

To push the images to Quay, you need to trigger a deployment. Once the images have been built from master successfully, issue the following cURL command:

curl -X POST -H "Authorization: token $GITHUB_TOKEN" \
    -H "Accept: application/vnd.github.ant-man-preview+json"  \
    -H "Content-Type: application/json" \
    https://api.github.com/repos/quarkusio/quarkus-images/deployments \
    --data '{"ref": "main", "environment": "quay"}'

Note that you need a GITHUB_TOKEN (API token) to trigger the deployment.

Discontinued images

Common maintenance tasks

Updating GraalVM

  • Open the graalvm.yaml file from the quarkus-graalvm-builder-image module
  • At the end of the file, add the new version, like:
    - graalvm-version: 22.3.1                                                   // graalvm version
    java-version: 11                                                          // java version
    variants:
      - sha: 55547725a8be3ceb0a1da29a84cd3e958ba398ce4470ac89a8ba1bdb6d9bddb8 // sha256 of the tar.gz file
        arch: amd64                                                           // architecture
      - sha: b46a3f9c82ac70990a62282b1fbe4474e784d9ba453839a428f88e94d21f8abc
        arch: arm64
    - graalvm-version: 22.3.1
    java-version: 17
    variants:
      - sha: 3acf4a59ae38cb0cd331a81777f6d24f8fdc6179ac25e5b198b6e08c444c9129
        arch: amd64
      - sha: a954fe8a4962be6ac8d0efff9ebf15108df59fad299213a31d2451bc78434818
        arch: arm64
    - graalvm-version: 22.3.1
    java-version: 19
    variants:
      - sha: 7cd99d805e7a8b7d4c4576802fb107fb862944e47ce5f2e4f37c0f469a70dd2f
        arch: amd64
      - sha: 95b0d0b1bf7e586695d8cf595df7a532b25314745397bb3d044cd00c409f6a0d
        arch: arm64

Be very careful with the indentation. Don't forget to update the hash (sha256) for each file. JDock enforces the signatures before building the image. You can download the files from https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-$graalvm-version/graalvm-ce-java$java-version-linux-$architecture-$graalvm-version.tar.gz. In the url the architecture is either amd64 or aarch64. JDock creates a multi-arch manifest when multiple architectures are defined. So, in addition, to the single-arch image (appended with -arm64 or amd64), a manifest listing both images is created and pushed.

  • If a tag was previously targeting the previous version, remove the tag attribute from the old version, and adds it to the new one:
    - graalvm-version: 22.3.1                                                   
    java-version: 11 
    tag: 22.3-java11    // the tag

When using a tag, JDock also pushes the image with the tag as label. It updates the targeted image automatically. So, it acts as a floating tag. Users are up to date and use the latest version (once they re-pull the image)

  • Open the quarkus-native-s2i/graalvm.yaml file and update it using the same logic. For s2i, we only support java 11 and 17. We also, restrict the number of versions to the bare minimum. So any x.y.1, replaces the x.y.0.

Once you have build the new images (mvn clean install), it is recommended to check they have been produced using docker images. Note that multi-arch manifests are not created during the local build.

Updating the base image

The common base images are defined in the pom.xml file at the root of the project. To update them, edit the pom.xml file:

<!-- See https://catalog.redhat.com/software/containers/ubi8/ubi-minimal/5c359a62bed8bd75a2c3fba8 -->
<ubi-min.base>registry.access.redhat.com/ubi8/ubi-minimal:8.8</ubi-min.base>
<!-- See https://catalog.redhat.com/software/containers/ubi8/ubi-micro/5ff3f50a831939b08d1b832a -->
<ubi-micro.base>registry.access.redhat.com/ubi8-micro:8.8</ubi-micro.base>

Pushing the image to quay

Once a pull request is merged into the main branch, and the main branch build succeeded, you can trigger a deployment. Produced images and multi-arch manifests will be deployed to quay.io.

To trigger the deployment, go to https://github.com/quarkusio/quarkus-images/actions/workflows/push-images.yml and click on the Run workflow button. Then, click on the Run workflow green button (do not change the branch - main should be selected already).

Note that every sunday, a deployment happens automatically.

More Repositories

1

quarkus

Quarkus: Supersonic Subatomic Java.
Java
13,620
star
2

quarkus-quickstarts

Quarkus quickstart code
Java
1,949
star
3

quarkus-super-heroes

Quarkus sample application - Super Heroes
CSS
283
star
4

quarkus-workshops

Hosts Quarkus related workshops
HTML
178
star
5

quarkusio.github.io

Website for Quarkus project
HTML
160
star
6

quarkus-platform

Quarkus Platform aggregates extensions from Quarkus Core and those developed by the community into a single compatible and versioned set that application developers can reference from their applications to align the dependency versions
Java
119
star
7

code.quarkus.io

Code Quarkus - Start coding with Quarkus
Java
117
star
8

gizmo

Java
50
star
9

qson

QSON is an object to JSON mapper
Java
32
star
10

quarkus-http

Java
31
star
11

ja.quarkus.io

Japanese localization project for https://github.com/quarkusio/quarkusio.github.io
HTML
27
star
12

quarkus-github-bot

A Quarkus-powered GitHub App to simplify issues and pull requests management in the Quarkus project.
Java
24
star
13

quarkus-ecosystem-ci

Repository used for orchestrating cross-CI builds of extensions part of Quarkiverse - Quarkus ecosystem of extensions.
Shell
23
star
14

cn.quarkus.io

(in-progress) Chinese localization project for https://github.com/quarkusio/quarkusio.github.io
HTML
16
star
15

pt.quarkus.io

Portuguese Brazilian localization project for https://github.com/quarkusio/quarkusio.github.io
HTML
15
star
16

virtual-threads-demos

A set of Quarkus applications utilizing virtual threads
Java
15
star
17

quarkus-extension-catalog

Quarkus Extension Catalog
Shell
13
star
18

registry.quarkus.io

Quarkus Extension Registry application
Java
10
star
19

quarkus-updates

OpenRewrite recipes to update Quarkus projects
Java
10
star
20

todo-demo-app

JavaScript
9
star
21

quarkus-buildpacks

Shell
9
star
22

quarkus-platform-bom-generator

Quarkus platform BOM generating tools
Java
9
star
23

es.quarkus.io

(incubating) Spanish localization project for https://github.com/quarkusio/quarkusio.github.io
HTML
8
star
24

quarkus-insights

Java
7
star
25

jbang-catalog

Collection of JBang scripts related to Quarkus and its subprojects
Java
7
star
26

quarkus-github-lottery

A Quarkus-powered application that regularly sends short lists of GitHub issues for triagers/maintainers to consider
Java
6
star
27

quarkus-security

The Quarkus core security implementation
Java
6
star
28

extensions

The source of https://quarkus.io/extensions
JavaScript
6
star
29

quarkus-web-lab

CMS with a Markdown Editor and comments
Java
6
star
30

quarkus-backports

Backporting Application for the Quarkus Project
Java
5
star
31

qute

Qute has been included in the main Quarkus repository.
Java
5
star
32

qlue

Quarkus Qlue, the step wiring framework
Java
4
star
33

quarkus-spring-data-api

Java
4
star
34

quarkus-spring-api

Extract of the Spring APIs used by the Quarkus Spring compatibility layer
Java
4
star
35

quarkus-langchain4j-workshop

Quarkus Langchain4J Workshop
Java
4
star
36

status.quarkus.io

Application centralizing the status of the Quarkus project
Java
3
star
37

homebrew-tap

Ruby
2
star
38

chocolatey-bucket

Chocolatey manifests for Quarkus CLI
PowerShell
2
star
39

search.quarkus.io

Search backend for Quarkus websites
Java
2
star
40

resteasy-reactive-testsuite

Java
2
star
41

quarkus-devtools-compat

repo to test cross version compatabiilty of Quarkus dev tools (cli, build plugins etc)
Java
2
star
42

conversational-release-action

Release Quarkus by conversing with a GitHub Action
Java
2
star
43

quarkus-spring-boot-api

Java
2
star
44

action-build-reporter

A GitHub action posting a build report in the job summary
Java
2
star
45

quarkus-fs-util

Utility classes to work efficiently with the FileSystem API
Java
1
star
46

quarkus-router

A lightweight Netty based HTTP router to allow different Netty based HTTP frameworks to share a socket
Java
1
star
47

quarkus-upstream-roadmap

Used to import upstream issues and track them in the organization roadmap
1
star
48

opentracing-quickstart-migration

HTML
1
star
49

quarkus-release

Release scripts for Quarkus
Java
1
star
50

action-helpers

Various GitHub Actions helping with the Quarkus project
Java
1
star
51

quarkus-keycloak-adapter

A temporary keycloak adaptor for quarkus-http
Java
1
star
52

get-contributors

Extract contributors from the Quarkus repositories
Java
1
star
53

build-reporter

Build reporting tools composed of a Maven extension and a build reporter consumable by Quarkus GitHub Apps and Quarkus GitHub Actions.
Java
1
star
54

quarkus-spring-security-api

Java
1
star
55

quarkus-kafka-broker-image

A container image exposing a Kafka broker suitable for the Quarkus Dev Services
1
star
56

quarkus-zulip-bot

Quarkus Zulip Bot
Java
1
star
57

monitor-artifact-publication-action

Monitor artifact publication to Maven Central
Java
1
star