Dockerfile ENTRYPOINT 使用变量
本意是想在 entrypoint 执行的命令中添加变量参数 JAVA_OPTS 和 PARAMS,如果按照这样写,变量是不被解析的,会报错。那么正确的写法是使用。
·
如下 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 ["sh", "-c", "java $JAVA_OPTS -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar app.jar $PARAMS"]
(END)
更多推荐
已为社区贡献43条内容
所有评论(0)