docker - 如何在ENTRYPOINT dockerfile中访问构建参数

标签 docker dockerfile docker-entrypoint payara-micro

我正在尝试基于payara dockerimage在payara micro中部署应用程序,并且我需要在ENTRYPOINT中传递一个论据快照版本(基本上我想以ENTRYFORM访问构建args)exec形式,因为首选ENTRYPOINT的exec形式:我的docker文件如下:

FROM payara/micro:5.193.1

ARG snapshotversion
ENV snapshotvs=$snapshotversion

RUN jar xf payara-micro.jar

COPY /service/war/target/app-emailverification-service-war-${snapshotversion}.war ${DEPLOY_DIR}/
COPY ojdbc6.jar ${PAYARA_HOME}/
COPY --chown=payara domain.xml /opt/payara/MICRO-INF/domain/domain.xml

RUN cd /opt/payara/MICRO-INF/domain && ls -lrt
#ENTRYPOINT ["java", "-jar", "/opt/payara/payara-micro.jar", "--deploy", "/opt/payara/deployments/app-service-war-$snapshotvs.war", "--domainConfig", "/opt/payara/MICRO-INF/domain/domain.xml","--addLibs", "/opt/payara/ojdbc6.jar"]

ENTRYPOINT java -jar /opt/payara/payara-micro.jar --deploy /opt/payara/deployments/app-service-war-$snapshotvs.war --domainConfig /opt/payara/MICRO-INF/domain/domain.xml --addLibs /opt/payara/ojdbc6.jar

评论的ENTRYPOINT不起作用。容器日志显示无效部署。我在这里想念什么?另外,我该如何使用CMD。有人可以举一个例子。

最佳答案

带注释的行不起作用,因为它是ENTRYPOINT的执行形式,它不调用shell(/bin/sh -c),因此不会发生变量替换。
如果要使用exec表单和环境变量,则需要直接指定它:

    ENTRYPOINT ["sh", "-c", "your command with env variable"]
关于如何使用CMD的问题,例如:
    ENTRYPOINT ["sh", "-c"]
    CMD ["your command with env variable"]
您提到,您想在ENTRYPOINT指令中使用build args。这是不可能的,因为ARGENV都没有扩展ENTRYPOINTCMD:https://docs.docker.com/engine/reference/builder/#environment-replacementhttps://docs.docker.com/engine/reference/builder/#scope
您也可以看看great page with best practices专​​门编写Dockerfile和ENTRYPOINT指令。

关于docker - 如何在ENTRYPOINT dockerfile中访问构建参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59197917/

相关文章:

Docker 入口点和 cmd 一起

linux - 指定音量后轨道停止工作

docker - 重用docker构建的镜像

Docker compose - 在 shell 中运行 shell 和应用程序

powershell - 如何使用Powershell在Windows容器中使用环境变量

docker - 入口点 : "entrypoint.sh" - docker compose

docker - 在 docker run 中获取权限被拒绝

java - 无法在 docker 容器中启动 H2o 集群,因为它无法绑定(bind)外部或主机 ip

Docker for windows - 无法连接到默认 iis 站点

docker - 在 kubernetes 集群中部署镜像获取 CrashLoopBackOff