5th*_*5th 1 bash docker dockerfile
我使用 dockerfiles 创建容器。我了解 docker,但我对 bash 的了解非常有限。我知道这个问题可能是重复的,但我不明白要搜索什么。
问题
该步骤RUN export A_NUM=$(echo ${A_VERSION} | head -c 3)不起作用。即使它bash完美地工作。我试过:
ENV A_VERSION=$A_VERSIONexportdockerfile 中的任何声明似乎都是徒劳的 - 有人能解释一下吗?
环境
我有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
Run Code Online (Sandbox Code Playgroud)
每个RUN都是一个单独的 bash 进程,具有自己的环境变量。您必须在一个命令中运行所有 bash 命令RUN:
RUN export A_NUM=$(echo ${A_VERSION} | head -c 3) \
&& echo $A_NUM \
&& 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 Code Online (Sandbox Code Playgroud)
此外,您将节省磁盘空间,因为每个RUN都会创建一个图像。
| 归档时间: |
|
| 查看次数: |
2379 次 |
| 最近记录: |