Comments (6)
Thanks @tianon
Cool, I just merged #47 so only generate-stackbrew-library
is needed. I'll merge if you submit a PR
from docker-maven.
I am not sure this file can be support arm64 https://apache.osuosl.org/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
from docker-maven.
I don't know what your question is. If you want to check maven in arm you should ask in the maven user list
from docker-maven.
@carlossg I believe he's referring to https://github.com/docker-library/official-images#architectures-other-than-amd64 and https://github.com/docker-library/official-images#multiple-architectures (which as of yesterday are now using manifest lists, so docker run debian
, etc can run on all supported arches!)
I think your Dockerfile
s here would probably work as-is on many architectures supported by the openjdk
and ibmjava
base images you're descended from. If that ends up being the case, we simply need to update library/maven
to the newer RFC-2822-based file format so we can add appropriate Architectures
entries (which we usually scrape directly via bashbrew
in our generate-stackbrew-library.sh
scripts for @docker-library repos).
I'm happy to take a crack at it if officially supporting multiple architectures is something you're willing to do! 👍
from docker-maven.
So far, the changes required are just adjusting the path in 9-jdk{,-slim}
to use dpkg --print-architecture
instead of hard-coded amd64
, and then things seem to "just work" on both arm64v8
and s390x
:
$ docker run -it --rm maven:3.5.0-jdk-7 mvn -v
OpenJDK 64-Bit Zero VM warning: You have loaded library /usr/share/maven/lib/jansi-native/linux64/libjansi.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 1.7.0_151, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-s390x/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.9.0-3-s390x", arch: "s390x", family: "unix"
$ docker run -it --rm maven:3.5.0-jdk-7-slim mvn -v
OpenJDK 64-Bit Zero VM warning: You have loaded library /usr/share/maven/lib/jansi-native/linux64/libjansi.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 1.7.0_151, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-s390x/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.9.0-3-s390x", arch: "s390x", family: "unix"
$ docker run -it --rm maven:3.5.0-jdk-8 mvn -v
OpenJDK 64-Bit Zero VM warning: You have loaded library /usr/share/maven/lib/jansi-native/linux64/libjansi.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 1.8.0_141, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-s390x/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.9.0-3-s390x", arch: "s390x", family: "unix"
$ docker run -it --rm maven:3.5.0-jdk-8-slim mvn -v
OpenJDK 64-Bit Zero VM warning: You have loaded library /usr/share/maven/lib/jansi-native/linux64/libjansi.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 1.8.0_141, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-s390x/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.9.0-3-s390x", arch: "s390x", family: "unix"
$ docker run -it --rm maven:3.5.0-ibmjava-8 mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 1.8.0, vendor: IBM Corporation
Java home: /opt/ibm/java/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "4.9.0-3-s390x", arch: "s390x", family: "unix"
$ docker run -it --rm maven:3.5.0-ibmjava-9 mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 9-internal, vendor: IBM Corporation
Java home: /opt/ibm/java
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "4.9.0-3-s390x", arch: "s390x", family: "unix"
$ docker run -it --rm maven:3.5.0-jdk-7 mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 1.7.0_151, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-arm64/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-92-generic", arch: "aarch64", family: "unix"
$ docker run -it --rm maven:3.5.0-jdk-7-slim mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 1.7.0_151, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-openjdk-arm64/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-92-generic", arch: "aarch64", family: "unix"
$ docker run -it --rm maven:3.5.0-jdk-8 mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 1.8.0_141, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-arm64/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-92-generic", arch: "aarch64", family: "unix"
$ docker run -it --rm maven:3.5.0-jdk-8-slim mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 1.8.0_141, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-arm64/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-92-generic", arch: "aarch64", family: "unix"
diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh
index 571d50b..4b6b4b5 100755
--- a/generate-stackbrew-library.sh
+++ b/generate-stackbrew-library.sh
@@ -7,7 +7,14 @@ variants=( alpine slim )
cd "$(dirname "${BASH_SOURCE[0]}")"
-url='git://github.com/carlossg/docker-maven'
+url='https://github.com/carlossg/docker-maven.git'
+
+# prints "$2$1$3$1...$N"
+join() {
+ local sep="$1"; shift
+ local out; printf -v out "${sep//%/%%}%s" "$@"
+ echo "${out#$sep}"
+}
generate-version() {
local version=$1
@@ -49,6 +56,7 @@ generate-version() {
# tag 3, latest
if [[ "$version" == "$default_jdk-$latest" ]]; then
versionAliases+=( $mavenVersion latest )
+ [ "$branch" = 'master' ] || versionAliases+=( "$branch" )
elif [[ "$version" == *"-$latest" ]]; then
# tag 3-ibmjava ibmjava
versionAliases+=( $mavenVersion-${version//-$latest/} ${version//-$latest/} )
@@ -64,18 +72,20 @@ generate-version() {
fi
fi
done
-
+
+ from="$(awk 'toupper($1) == "FROM" { print $2 }' "$version/Dockerfile")"
+ arches="$(bashbrew cat --format '{{- join ", " .TagEntry.Architectures -}}' "$from")"
+
echo
- for va in "${versionAliases[@]}"; do
- if [ "$branch" != 'master' ] && [ "$va" = 'latest' ]; then
- echo "${branch}: ${url}@${commit} $version"
- else
- echo "${va}${branch_suffix}: ${url}@${commit} $version"
- fi
- done
+ echo "Tags: $(join ', ' "${versionAliases[@]}")"
+ echo "Architectures: $arches"
+ [ "$branch" = 'master' ] || echo "GitFetch: refs/heads/$branch"
+ echo "GitCommit: $commit"
+ echo "Directory: $version"
}
-echo '# maintainer: Carlos Sanchez <[email protected]> (@carlossg)'
+echo 'Maintainers: Carlos Sanchez <[email protected]> (@carlossg)'
+echo "GitRepo: $url"
versions=( jdk-*/ ibmjava-*/ )
versions=( "${versions[@]%/}" )
diff --git a/jdk-9-slim/Dockerfile b/jdk-9-slim/Dockerfile
index 0359bd4..08bfc0e 100644
--- a/jdk-9-slim/Dockerfile
+++ b/jdk-9-slim/Dockerfile
@@ -13,7 +13,7 @@ RUN apt-get update && \
# Maven fails with 'Can't read cryptographic policy directory: unlimited'
# because it looks for $JAVA_HOME/conf/security/policy/unlimited but it is in
# /etc/java-9-openjdk/security/policy/unlimited
-RUN ln -s /etc/java-9-openjdk /usr/lib/jvm/java-9-openjdk-amd64/conf
+RUN ln -s /etc/java-9-openjdk "/usr/lib/jvm/java-9-openjdk-$(dpkg --print-architecture)/conf"
RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
&& curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
diff --git a/jdk-9/Dockerfile b/jdk-9/Dockerfile
index 3eaa491..2b2eb61 100644
--- a/jdk-9/Dockerfile
+++ b/jdk-9/Dockerfile
@@ -8,7 +8,7 @@ ARG BASE_URL=https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries
# Maven fails with 'Can't read cryptographic policy directory: unlimited'
# because it looks for $JAVA_HOME/conf/security/policy/unlimited but it is in
# /etc/java-9-openjdk/security/policy/unlimited
-RUN ln -s /etc/java-9-openjdk /usr/lib/jvm/java-9-openjdk-amd64/conf
+RUN ln -s /etc/java-9-openjdk "/usr/lib/jvm/java-9-openjdk-$(dpkg --print-architecture)/conf"
RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
&& curl -fsSL -o /tmp/apache-maven.tar.gz ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
Would be happy to turn this into a PR if it seems reasonable to you! It's currently using bashbrew cat
to grab the Architectures
list of the parent images directly, but you could also simply embed the current values directly if you'd rather not have a dependency on bashbrew
. 👍
from docker-maven.
That's great, thanks
from docker-maven.
Related Issues (20)
- Errors running MavenCLI HOT 11
- 3.9.2 java 8 handshake_failure HOT 4
- Maven 3.9, unauthorized 401 when reaching MS AZURE repo with PAT HOT 6
- Please update bash in Alpine image to avoid error message HOT 1
- Latest images don't have ssh causing maven-release-plugin to fail HOT 10
- Could not create local repository at /home/user/.m2/repository
- Please add amazoncorretto + al2023 images HOT 2
- How to get 3.9.4 released? HOT 1
- Wrong docer example for eclipse-temurin-17 version? HOT 1
- amazoncorretto-11-debian ignores environment variables with a period HOT 1
- ETA on JDK 21 compatible image
- Corretto 21 + AL2023 HOT 5
- Add Eclipse Temurin 21 HOT 1
- /usr/local/bin/mvn-entrypoint.sh: 50: exec: 1: not found HOT 2
- maven: 3.6.3-openjdk-21 HOT 1
- Add Apache Maven 3.9.6
- Image maven:3.8.8 missing
- Publish image with semeru jdk 21 HOT 1
- Image for maven 3.9.6 + azuluzulu-8 HOT 5
- 3.9.6-eclipse-temurin-21 and docker buildx
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from docker-maven.