繁体   English   中英

APR 可在生产环境中实现最佳性能

[英]APR for optimal performance in production environments

我正在 docker 容器中安装一个 java 应用程序。 它运行良好,但我在日志中保留了这个错误:

信息 1 --- [ost-startStop-1] oacatalina.core.AprLifecycleListener :在 java.library.path: [/usr/java/packages /lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr /lib]

所以,我试图通过遵循thisthis来安装这个 APR 包,并通过在我的 dockerfile 中添加这一行来安装 tomcat native:

运行 apt-get install -y libtcnative-1

但是,当添加这一行时,我在日志中收到以下消息:

错误 1 ​​--- [ost-startStop-1] oacatalina.core.AprLifecycleListener :安装了基于 APR 的 Apache Tomcat Native 库的不兼容版本 [1.1.33],而 Tomcat 需要版本 [1.2.14]

我尝试安装:

apt-get install -y openjdk-8-jdk libapr1-dev

apt-get install -y openjdk-8-jdk libtcnative-1 libapr1-dev

但这些都没有奏效..我不断收到相同的消息。

我还尝试按照此处的第一个答案从源代码安装,但这也不起作用。

这是我的 dockerfile 的其余部分:

FROM ubuntu:16.04

RUN apt-get update \
 && apt-get install -y software-properties-common python-software-properties \
 && add-apt-repository ppa:mozillateam/ppa \
 && apt-get update \
 && apt-get install -y firefox firefox-esr

RUN apt-get install -y libtcnative-1 openjdk-8-jdk 

任何帮助表示赞赏。 谢谢!

如果有人仍然感兴趣,这就是我所做的:

  1. 从 Apache 下载最新的 apr 和 tcnative 并将档案解压缩到您的 Dockerfile 所在的目录中
  2. 执行多阶段构建。 第一阶段构建库:
    FROM adoptopenjdk/openjdk11:jdk-11.0.1.13 AS build
    ADD apr-1.7.0 $HOME/apr-1.7.0
    ADD tcnative $HOME/tcnative
    ARG DEBIAN_FRONTEND=noninteractive    
    RUN apt-get update -y && \
        apt-get -y upgrade && \
        apt-get install -y build-essential libssl-dev
    WORKDIR $HOME/apr-1.7.0
    RUN ./configure && make && make install

    WORKDIR $HOME/tcnative
    RUN ./configure --with-apr=/usr/local/apr/bin/apr-1-config  --with-java-home=$JAVA_HOME  --with-ssl=$HOME/OPENSSL --prefix=/usr/local/apr
    RUN make && make install
  1. 第二阶段构建生产服务器:
    FROM adoptopenjdk/openjdk11:jre-11.0.10_9
    ARG DEBIAN_FRONTEND=noninteractive
    RUN apt-get update -y && \
        apt-get -y upgrade && \
        apt-get install -y --no-install-recommends libssl-dev x11-apps && \
        apt-get clean && \
        apt-get autoremove -y --purge && \
            rm -rf /var/lib/apt/lists/*    
    COPY --from=build /usr/local/apr /usr/local/apr
  1. 当您调用 java 来运行您的 jar 时,请设置您的库路径:

    入口点 ["java","-Djava.library.path=/usr/local/apr/lib","-jar","app.jar"]

该应用程序现在启动并报告正确的库:

org.apache.catalina.core.AprLifecycleListener - Loaded Apache Tomcat Native library [1.2.31] using APR version [1.7.0].

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM