我有一个Dockerfile,git克隆了这样一个项目:
...
RUN git clone -b 027-infra http://201.57.129.38/arbitrium/api.git
...
我想用环境变量替换027-infra
(项目的所需分支),但根据文档https://docs.docker.com/engine/reference/builder/#environment-replacement,RUN指令似乎不支持env变量。不知道为什么!
如何使用外部变量git克隆项目来选择分支?
其他一些信息:
更新
无法使env变量正常工作,但我使用了args。好像我需要在容器构建期间添加一个ARG调用来接受参数:
...
ARG GIT_BRANCH
RUN git clone -b ${GIT_BRANCH} http://201.57.129.38/arbitrium/web.git
...
并使用docker-compose build
或类似docker build --build-arg GIT_BRANCH=027-infra -t arbitrium_api:latest -f Dockerfile_api .
仍然不明白为什么env变量似乎没有在git clone运行中被替换。
答案 0 :(得分:1)
说RUN
"不支持"有点误导?环境变量。出于所有实际目的,它确实支持它们,但是支持是由RUN
生成的shell而不是Dockerfile解析器实现的。
因此,在阅读文档之前,请按照您的计划使用环境变量。