gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:21:41 24 4
gpt4 key购买 nike

我正在尝试基于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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com