如下 Dockerfile 文件中:
#基礎(chǔ)鏡像,如果本地沒有,會(huì)從遠(yuǎn)程倉庫拉取。
#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/
#在容器中創(chuàng)建掛載點(diǎn),可以多個(gè)
VOLUME ["/tmp"]
#聲明了容器應(yīng)該打開的端口并沒有實(shí)際上將它打開
EXPOSE 8080
#定義參數(shù)(build構(gòu)建時(shí)使用)
ARG JAR_FILE=app.jar
ARG BRANCH
ARG ENV=dev
#設(shè)置環(huán)境變量(程序運(yùn)行時(shí)使用)
ENV JAVA_OPTS=""
ENV PARAMS=""
#拷貝本地文件到鏡像中
COPY ${JAR_FILE} app.jar
#指定容器啟動(dòng)時(shí)要執(zhí)行的命令,但如果存在CMD指令,CMD中的參數(shù)會(huì)被附加到ENTRYPOINT指令的后面
ENTRYPOINT ["java", "$JAVA_OPTS", "-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom","-jar", "app.jar", "$PARAMS"]
本意是想在 entrypoint 執(zhí)行的命令中添加變量參數(shù) JAVA_OPTS 和 PARAMS,如果按照這樣寫,變量是不被解析的,會(huì)報(bào)錯(cuò)。
那么正確的寫法是使用 sh -c
命令來執(zhí)行后面的命令,示例如下:文章來源:http://www.zghlxwxcb.cn/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)文章來源地址http://www.zghlxwxcb.cn/news/detail-564371.html
到了這里,關(guān)于Dockerfile ENTRYPOINT 使用變量的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!