为什么我的docker CI映像不能在任何地方复制/运行



我有一个Dockerfile做CI。

它使用第三方tarball的内容,而该tarball又包含部分Java运行时(是的,它很丑)。

$ git clone xxx
$ cd xxx
$ docker build .

在一个主机上执行Dockerfile时需要"…/jre/…/server/libjvm. exe "。在另一台主机上执行时需要"…/jre/…/client/libjvm. so"。所以,来自那个垃圾。

Docker版本到处都是1.7.1除了git的repo文件夹(./)和tarball包之外,没有任何东西被添加到容器中。这怎么可能呢?是否有任何共享环境变量隐式传递给docker?

Dockerfile是这样的:

FROM ubuntu:14.04
...
WORKDIR /
RUN wget http://SOME-URL TOOL-PACKAGE
RUN tar xf TOOL-PACKAGE
...
# setup some envs
ENV
# extend PATH
ENV PATH $PATH: ... 
...
COPY ./ src
WORKDIR src
# use tool to generate some input files
RUN SOME-TOOL-BINARY-WHICH-USES-JRE
# continue build with make
RUN make

当您有可能在构建过程中修改java的执行时,您可以显式地传递-client-server参数来选择应该使用客户端还是服务器JVM。

有关详细信息,您可以查看另一个stackoverflow问题

最新更新