2017-06-15 12 views
1

我有一個基於碼頭集裝箱的紅寶石應用程序。其中之一是從openjdk建設的Flyway:8。本地(osx sierra)完美運作。但是,當我試圖建立並啓動它在我的服務器上,它失敗的:無法加載碼頭集裝箱中的libjli.so

flyway_1 | /flyway/jre/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory 

我的環境:

  • 的CentOS Linux的發佈1611年3月7日(核心)
  • 泊塢窗版本17.03.1策,建立c6d412e
  • 泊塢窗,撰寫版本1.13.0,構建1719ceb

遷飛dockerfile:

FROM openjdk:8 

RUN apt-get update && apt-get install -f -y postgresql-client 

COPY ./vendor/flyway/ /flyway 
COPY ./db/migrate.sh /flyway 
RUN ln -s /flyway/flyway /usr/local/bin/flyway 

WORKDIR /flyway 
CMD ["bash", "migrate.sh"] 

我有點卡住 - 能夠做些什麼來解決這個問題?通過飛路用於Java的

UPD 1.

出於某種原因,我的本地飛行用的容器已經正確定義的變量:

➜ docker-compose run --no-deps flyway /bin/bash 
[email protected]:/flyway# ldd ./jre/bin/java 
    linux-vdso.so.1 (0x00007fff9bcd2000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa9720da000) 
    libjli.so => /flyway/./jre/bin/../lib/amd64/jli/libjli.so (0x00007fa971ec4000) 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa971cc0000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa971922000) 
    /lib64/ld-linux-x86-64.so.2 (0x0000563539cb3000) 

而且相同的容器部署到服務器沒有路徑libjli .so:

➜ sudo docker-compose run --no-deps flyway /bin/bash 
[email protected]:/flyway# ldd ./jre/bin/java 
    linux-vdso.so.1 (0x00007ffe24d53000) 
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbb35053000) 
    libjli.so => not found 
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbb34e4f000) 
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbb34ab1000) 
    /lib64/ld-linux-x86-64.so.2 (0x00007fbb35277000) 

也許這是一個飛路問題?但爲什麼它在完全相同的容器中有所不同

+0

您是否嘗試更改圖片庫?我正在閱讀關於這個問題的文章,我發現了一些關於它的報道,但他們只提到了阿爾卑斯山的圖像。 – German

+0

@德國我沒有使用阿爾派,我已經嘗試過版本7,8和9 - 都是一樣的東西。我在github上看到了同樣的討論,但不幸的是這並沒有幫助。主要令人困惑的是,在我的macbook上,它完全從相同的源代碼構建 –

+1

您是否嘗試手動定義LD_LIBRARY_PATH? 這樣做是不切實際的,他們說這是行得通的。 – German

回答

0

像往常一樣,答案比你想象的要簡單 - flyway總是使用自己的java庫,所以如果你使用自動生成的.gitignore文件,你需要檢查* .so文件是否不從flyway目錄中排除。

我修正了.gitignore,推送了一個新的提交併在服務器上使用它,現在它工作正常。