【发布时间】:2021-08-19 20:11:03
【问题描述】:
我使用 dockerfiles 来创建一个容器。我知道 docker,但我对 bash 的理解非常有限。我知道这个问题可能是重复的,但我不明白要搜索什么。
问题
步骤RUN export A_NUM=$(echo ${A_VERSION} | head -c 3) 不起作用。即使在bash 中它也能完美运行。我试过了:
- 设置
ENV A_VERSION=$A_VERSION - 在 bash 中复制我的问题(通过进入构建的容器)
dockerfile 中的任何 export 声明似乎都是徒劳的 - 谁能解释一下?
设置
我有 app_A 和 app_B。当我配置 app_B 时,我需要考虑所选版本的 app_A。一个简化的 dockerfile 如下所示:
FROM openjdk:8-jdk-slim
ARG A_VERSION=3.1.3
# RUN install app_A with A_VERSION
# RUN install app_B
WORKDIR /HOME/A_USER
USER A_USER
# RUN set some environment variables for app_A
RUN export A_NUM=$(echo ${A_VERSION} | head -c 3)
RUN echo $A_NUM
RUN if awk 'BEGIN {exit !('$A_NUM' >= '3.2')}'; then export path_A="/opt/Name_A"; else export path_A="/usr/local/Name_A"; fi
# RUN Use B_VERSION to set some environment variables for app_B
【问题讨论】:
-
我现在编写了一个单独的 bash 脚本来创建容器。
if awk-line 从 dockerfile 中的ARG命令执行并将其参数传递给ARG
标签: bash docker dockerfile