如何使用 openjdk:7 Docker 图像和 Gradle 包装器避免“EC 参数错误”?
How to avoid `EC parameters error` using the openjdk:7 Docker image and a Gradle wrapper?
这个 Dockerfile:
FROM openjdk:7
WORKDIR /restdocs/
RUN git clone https://github.com/spring-projects/spring-restdocs.git /restdocs
RUN git checkout v1.1.2.RELEASE
RUN ./gradlew build
使用 docker build . -t rest-notes
构建会导致以下错误:
Exception in thread "main" javax.net.ssl.SSLException: java.security.ProviderException: java.security.InvalidKeyException: EC parameters error
.
我可以在 Dockerfile 中做什么来避免这种情况并使 Gradle 包装器工作?
多亏了 Erich Seifert 和他在这里的提交,我才得以解决这个问题:https://github.com/eseifert/gral/commit/c24e08a91952a99b8c8b686a1b172335db8cdf87。更新的 Dockerfile 有效:
FROM openjdk:7
RUN apt-get update && apt-get install sudo
# Fix the EC parameters error: (ref https://github.com/travis-ci/travis-ci/issues/8503)
RUN sudo wget "https://bouncycastle.org/download/bcprov-ext-jdk15on-158.jar" -O "${JAVA_HOME}"/jre/lib/ext/bcprov-ext-jdk15on-158.jar && \
sudo perl -pi.bak -e 's/^(security\.provider\.)([0-9]+)/.(+1)/ge' /etc/java-7-openjdk/security/java.security && \
echo "security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider" | sudo tee -a /etc/java-7-openjdk/security/java.security
WORKDIR /restdocs/
RUN git clone https://github.com/spring-projects/spring-restdocs.git /restdocs
RUN git checkout v1.1.2.RELEASE
RUN ./gradlew build
(没关系 spring-restdocs 分支的构建失败 - 这与 EC 参数错误无关:)
升级到更高版本的 Maven docker 映像解决了我的问题。我用 maven:3.6-jdk-11
.
替换了 maven:3-jdk-7
就我而言,我使用了一个较旧的示例 GitLab CI 脚本。我更新的 GitLab CI 脚本现在看起来像:
image: maven:3.6-jdk-11
build:
script: "mvn install -B"
这个 Dockerfile:
FROM openjdk:7
WORKDIR /restdocs/
RUN git clone https://github.com/spring-projects/spring-restdocs.git /restdocs
RUN git checkout v1.1.2.RELEASE
RUN ./gradlew build
使用 docker build . -t rest-notes
构建会导致以下错误:
Exception in thread "main" javax.net.ssl.SSLException: java.security.ProviderException: java.security.InvalidKeyException: EC parameters error
.
我可以在 Dockerfile 中做什么来避免这种情况并使 Gradle 包装器工作?
多亏了 Erich Seifert 和他在这里的提交,我才得以解决这个问题:https://github.com/eseifert/gral/commit/c24e08a91952a99b8c8b686a1b172335db8cdf87。更新的 Dockerfile 有效:
FROM openjdk:7
RUN apt-get update && apt-get install sudo
# Fix the EC parameters error: (ref https://github.com/travis-ci/travis-ci/issues/8503)
RUN sudo wget "https://bouncycastle.org/download/bcprov-ext-jdk15on-158.jar" -O "${JAVA_HOME}"/jre/lib/ext/bcprov-ext-jdk15on-158.jar && \
sudo perl -pi.bak -e 's/^(security\.provider\.)([0-9]+)/.(+1)/ge' /etc/java-7-openjdk/security/java.security && \
echo "security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider" | sudo tee -a /etc/java-7-openjdk/security/java.security
WORKDIR /restdocs/
RUN git clone https://github.com/spring-projects/spring-restdocs.git /restdocs
RUN git checkout v1.1.2.RELEASE
RUN ./gradlew build
(没关系 spring-restdocs 分支的构建失败 - 这与 EC 参数错误无关:)
升级到更高版本的 Maven docker 映像解决了我的问题。我用 maven:3.6-jdk-11
.
maven:3-jdk-7
就我而言,我使用了一个较旧的示例 GitLab CI 脚本。我更新的 GitLab CI 脚本现在看起来像:
image: maven:3.6-jdk-11
build:
script: "mvn install -B"