Dockerfile ENTRYPOINT 使用变量
Posted catoop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dockerfile ENTRYPOINT 使用变量相关的知识,希望对你有一定的参考价值。
如下 Dockerfile 文件中:
#基础镜像,如果本地没有,会从远程仓库拉取。
#FROM openjdk:8-jdk-slim
#FROM docker.io/store/oracle/serverjre:8
FROM xzxiaoshan/dockerssh:oracle_serverjre_8
#镜像的制作人
LABEL MAINTAINER=365384722@qq.com
#工作目录
WORKDIR /app/
#在容器中创建挂载点,可以多个
VOLUME ["/tmp"]
#声明了容器应该打开的端口并没有实际上将它打开
EXPOSE 8080
#定义参数(build构建时使用)
ARG JAR_FILE=app.jar
ARG BRANCH
ARG ENV=dev
#设置环境变量(程序运行时使用)
ENV JAVA_OPTS=""
ENV PARAMS=""
#拷贝本地文件到镜像中
COPY $JAR_FILE app.jar
#指定容器启动时要执行的命令,但如果存在CMD指令,CMD中的参数会被附加到ENTRYPOINT指令的后面
ENTRYPOINT ["java", "$JAVA_OPTS", "-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom","-jar", "app.jar", "$PARAMS"]
本意是想在 entrypoint 执行的命令中添加变量参数 JAVA_OPTS 和 PARAMS,如果按照这样写,变量是不被解析的,会报错。
那么正确的写法是使用 sh -c 命令来执行后面的命令,示例如下:
ENTRYPOINT ["java", "$JAVA_OPTS", "-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom","-jar", "app.jar", "$PARAMS"]
(END)
以上是关于Dockerfile ENTRYPOINT 使用变量的主要内容,如果未能解决你的问题,请参考以下文章