如下 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
命令来执行后面的命令,示例如下:文章来源:https://www.toymoban.com/news/detail-564371.html
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -jar app.jar $PARAMS"]
(END)文章来源地址https://www.toymoban.com/news/detail-564371.html
到了这里,关于Dockerfile ENTRYPOINT 使用变量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!