有没有办法在dockerfile的ENV部分进行变量扩展?在下面的示例中,我希望javaMemoryLimit能够在JAVA_OPTS中扩展,但我发现当我运行图像时,java进程存在而不是 -Xmx1024M 我们留下 -Xmx
Function<Person , Employee> function = p -> {
......
return new Employee() ;
} ;
Employee e = function.apply(new Person());
我有以下工作,但我宁愿通过修改JAVA_OPTS变量而不是在java命令中添加额外的开关来完成:
FROM azul/zulu-openjdk-centos:latest
VOLUME /tmp
ADD myspecificcode.jar app.jar
RUN bash -c 'touch /app.jar'
ENV javaMemoryLimit="1024M"\
JAVA_OPTS="-Djava.net.preferIPv4Stack=true -Dsun.rmi.dgc.client.gcInterval=3600000 -XX:+MaxFDLimit -XX:+ExplicitGCInvokesConcurrent -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -Xmx$javaMemoryLimit"
ENTRYPOINT java $JAVA_OPTS -jar /app.jar
答案 0 :(得分:3)
Docker documentation解释了这些值仅在后代命令中可用。因此,您必须将其拆分为单独的ENV
命令:
ENV javaMemoryLimit=1024M \
gcInterval=3600000
ENV JAVA_OPTS="-Dsun.rmi.dgc.client.gcInterval=$gcInterval -Xmx$javaMemoryLimit"
ENV指令将环境变量设置为值 。此值将位于所有后代的环境中 Dockerfile命令也可以在很多内联替换。