2017-06-15 84 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,推送了一个新的提交并在服务器上使用它,现在它工作正常。