簡體   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