diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index d35d12d..64c1246 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,6 +1,8 @@ name: "Docker" on: + workflow_dispatch: + push: branches: ["master"] @@ -11,14 +13,45 @@ permissions: contents: read jobs: + test: + name: "Test" + runs-on: "ubuntu-latest" + + strategy: + matrix: + include: + - item: jdk8 + - item: mvn + - item: openjdk-mvn + - item: openjdk8 + fail-fast: false + + steps: + - name: "Checkout" + uses: actions/checkout@v4 + + - name: "Set up Docker Buildx" + uses: docker/setup-buildx-action@v3 + + - name: "Build image" + uses: docker/build-push-action@v6 + with: + context: "${{ matrix.item }}" + load: true + tags: "dockette/${{ matrix.item }}:latest" + + - name: "Test image" + run: "make test-${{ matrix.item }}" + build: name: "Build" + needs: ["test"] uses: dockette/.github/.github/workflows/docker.yml@master secrets: inherit with: - image: "dockette/${{ matrix.item }}" - tag: "latest" - context: "${{ matrix.item }}" + image: "dockette/${{ matrix.item }}" + tag: "latest" + context: "${{ matrix.item }}" strategy: matrix: include: @@ -27,4 +60,21 @@ jobs: - item: openjdk-mvn - item: openjdk8 - fail-fast: false \ No newline at end of file + fail-fast: false + + docs: + name: "Docs" + runs-on: "ubuntu-latest" + needs: ["build"] + if: github.ref == 'refs/heads/master' + + steps: + - name: "Checkout" + uses: actions/checkout@v4 + + - name: "Update Docker Hub description" + uses: peter-evans/dockerhub-description@v5 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + repository: "dockette/java" diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..611fa7e --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,36 @@ +# AGENTS.md + +## Project + +Legacy Dockette Java image collection for Java 8 and Maven 3 workloads. Images are based on `dockette/alpine:3.8` and are kept for compatibility, not as current Java runtime images. + +## Images + +- Published images are `dockette/jdk8`, `dockette/openjdk8`, `dockette/mvn`, and `dockette/openjdk-mvn`. +- Build contexts are `jdk8`, `openjdk8`, `mvn`, and `openjdk-mvn`. +- `jdk8` and `mvn` install Oracle JDK 8 with glibc compatibility. +- `openjdk8` and `openjdk-mvn` install Alpine OpenJDK 8 packages. +- `mvn` and `openjdk-mvn` include Maven `3.5.4` and `settings-docker.xml`. +- GitHub Actions builds and publishes each context with the `latest` tag. + +## Commands + +- `make build` builds all four image contexts. +- `make build-jdk8`, `make build-mvn`, `make build-openjdk-mvn`, and `make build-openjdk8` build individual images. +- `make test` runs `java -version` and, for Maven images, `mvn -version`. +- `make run` defaults to `run-openjdk8`. +- Override `DOCKER_IMAGE_PREFIX` or `DOCKER_TAG` for local image names and tags. + +## Testing + +- Use `make -n build test run` to dry-run the aggregate commands before changing build logic. +- Run the relevant `make test-*` target after building one image context. +- Keep workflow matrix items in sync with the `IMAGES` Makefile variable and repository directories. + +## Guidelines + +- Keep Dockerfiles, `Makefile`, README usage examples, and `.github/workflows/docker.yml` matrix entries aligned. +- Prefer `DOCKER_*` names for Docker-related Makefile variables. +- Place `.PHONY: ` directly above each Makefile target. +- Treat version bumps as legacy compatibility changes and update README version notes when image contents change. +- Do not introduce unrelated formatting or structural changes. diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..43c994c --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..528ddbf --- /dev/null +++ b/Makefile @@ -0,0 +1,62 @@ +DOCKER_IMAGE_PREFIX?=dockette +DOCKER_TAG?=latest +IMAGES := jdk8 mvn openjdk-mvn openjdk8 + + +.PHONY: build +build: $(addprefix build-,$(IMAGES)) + +.PHONY: test +test: $(addprefix test-,$(IMAGES)) +.PHONY: run +run: run-openjdk8 + +.PHONY: build-jdk8 +build-jdk8: + docker build -t ${DOCKER_IMAGE_PREFIX}/jdk8:${DOCKER_TAG} jdk8 + +.PHONY: build-mvn +build-mvn: + docker build -t ${DOCKER_IMAGE_PREFIX}/mvn:${DOCKER_TAG} mvn + +.PHONY: build-openjdk-mvn +build-openjdk-mvn: + docker build -t ${DOCKER_IMAGE_PREFIX}/openjdk-mvn:${DOCKER_TAG} openjdk-mvn + +.PHONY: build-openjdk8 +build-openjdk8: + docker build -t ${DOCKER_IMAGE_PREFIX}/openjdk8:${DOCKER_TAG} openjdk8 + +.PHONY: test-jdk8 +test-jdk8: + docker run --rm ${DOCKER_IMAGE_PREFIX}/jdk8:${DOCKER_TAG} java -version + +.PHONY: test-mvn +test-mvn: + docker run --rm ${DOCKER_IMAGE_PREFIX}/mvn:${DOCKER_TAG} java -version + docker run --rm ${DOCKER_IMAGE_PREFIX}/mvn:${DOCKER_TAG} mvn -version + +.PHONY: test-openjdk-mvn +test-openjdk-mvn: + docker run --rm ${DOCKER_IMAGE_PREFIX}/openjdk-mvn:${DOCKER_TAG} java -version + docker run --rm ${DOCKER_IMAGE_PREFIX}/openjdk-mvn:${DOCKER_TAG} mvn -version + +.PHONY: test-openjdk8 +test-openjdk8: + docker run --rm ${DOCKER_IMAGE_PREFIX}/openjdk8:${DOCKER_TAG} java -version + +.PHONY: run-jdk8 +run-jdk8: + docker run --rm -it -v "$${PWD}:/data" ${DOCKER_IMAGE_PREFIX}/jdk8:${DOCKER_TAG} java -version + +.PHONY: run-mvn +run-mvn: + docker run --rm -it -v "$${PWD}:/data" ${DOCKER_IMAGE_PREFIX}/mvn:${DOCKER_TAG} + +.PHONY: run-openjdk-mvn +run-openjdk-mvn: + docker run --rm -it -v "$${PWD}:/data" ${DOCKER_IMAGE_PREFIX}/openjdk-mvn:${DOCKER_TAG} + +.PHONY: run-openjdk8 +run-openjdk8: + docker run --rm -it -v "$${PWD}:/data" ${DOCKER_IMAGE_PREFIX}/openjdk8:${DOCKER_TAG} java -version diff --git a/README.md b/README.md index 02b255f..faa6329 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,17 @@ -# JAVA +

Dockette / Java

-Ready-to-use images for Java JDK 8 (OpenJDK) & Maven 3. +

+ GitHub Actions + Docker Hub pulls + GitHub Sponsors + Support/Discussions +

------ - -[![Docker Stars](https://img.shields.io/docker/stars/dockette/java.svg?style=flat)](https://hub.docker.com/r/dockette/java/) -[![Docker Pulls](https://img.shields.io/docker/pulls/dockette/java.svg?style=flat)](https://hub.docker.com/r/dockette/java/) +

+ Ready-to-use legacy images for Java JDK 8 (OpenJDK) and Maven 3. +

-## Discussion / Help - -[![Join the chat](https://img.shields.io/gitter/room/dockette/dockette.svg?style=flat-square)](https://gitter.im/dockette/dockette?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +----- ## Usage @@ -17,10 +19,8 @@ Ready-to-use images for Java JDK 8 (OpenJDK) & Maven 3. > Java 1.8.0_131-b13 -This Oracle Java JDK 8 is based on Alpine linux (`dockette/alpine:3.8`). - -[![Docker Stars](https://img.shields.io/docker/stars/dockette/jdk8.svg?style=flat)](https://hub.docker.com/r/dockette/jdk8/) -[![Docker Pulls](https://img.shields.io/docker/pulls/dockette/jdk8.svg?style=flat)](https://hub.docker.com/r/dockette/jdk8/) +This Oracle Java JDK 8 image is based on Alpine linux (`dockette/alpine:3.8`). +Docker Hub: ``` docker run -v /path/to/site:/srv dockette/jdk8 @@ -30,27 +30,37 @@ docker run -v /path/to/site:/srv dockette/jdk8 > OpenJDK 8.171.11-r0 -This OpenJDK 8 is based on Alpine linux (`dockette/alpine:3.8`). - -[![Docker Stars](https://img.shields.io/docker/stars/dockette/openjdk8.svg?style=flat)](https://hub.docker.com/r/dockette/openjdk8/) -[![Docker Pulls](https://img.shields.io/docker/pulls/dockette/openjdk8.svg?style=flat)](https://hub.docker.com/r/dockette/openjdk8/) +This OpenJDK 8 image is based on Alpine linux (`dockette/alpine:3.8`). +Docker Hub: ``` docker run -v /path/to/site:/srv dockette/openjdk8 ``` -### Maven 3 +### Maven 3 > Maven 3.5.4 -This Maven 3 with Oracle Java JDK 8 is based on Alpine linux (`dockette/alpine:3.8`). - -[![Docker Stars](https://img.shields.io/docker/stars/dockette/mvn.svg?style=flat)](https://hub.docker.com/r/dockette/mvn/) -[![Docker Pulls](https://img.shields.io/docker/pulls/dockette/mvn.svg?style=flat)](https://hub.docker.com/r/dockette/mvn/) +This Maven 3 with Oracle Java JDK 8 image is based on Alpine linux (`dockette/alpine:3.8`). +Docker Hub: ``` docker run -v /path/to/site:/srv dockette/mvn ``` +### OpenJDK 8 + Maven 3 + +This Maven 3 with OpenJDK 8 image is based on Alpine linux (`dockette/alpine:3.8`). +Docker Hub: + +``` +docker run -v /path/to/site:/srv dockette/openjdk-mvn +``` + +## Legacy Support + +These images target Java 8, Maven 3.5.4, and Alpine 3.8. They are kept for legacy workloads and should not be treated as current Java runtime images. + ## Maintenance + See [how to contribute](https://github.com/dockette/.github/blob/master/CONTRIBUTING.md) to this package. Consider to [support](https://github.com/sponsors/f3l1x) **f3l1x**. Thank you for using this package.