如何更改if语句中的docker ARG值?

时间:2018-05-30 10:29:04

标签: docker docker-build

Ubuntu 16.04上的Dockerfile docker 17.12.1-ce 我使用

ARG ver=latest
ARG pkg=master

为了构建一个docker容器,我想调用docker build --build-arg ver=v1 .来设置一个特殊的包。

我的Dockerfile中的代码处理部分是

RUN if[ "x$ver" = "xv1" ] ; then pkg=v1.2.3 ; fi
RUN echo $pkg

不幸的是, ARG pkg 变量未更新,且echo语句始终显示其初始值。

如何在if语句中更新构建变量 pkg

1 个答案:

答案 0 :(得分:1)

您将无法将变量从一个RUN传递到另一个RUN,因为每个if [ $ver="v1" ]; then pkg=1.2.3; fi; docker build --build-arg ver=$ver --build-arg pkg=$pkg . 命令都在另一个shell中执行。 解决问题的方法是将逻辑提取到脚本中并使用类似这样的构建参数执行docker:

import os
import xlrd

working_dir = os.getcwd()

source_wb = xlrd.open_workbook(working_dir+'/4G_CA_Traffic.xlsx')
source_ws = source_wb.sheet_by_name('Subreport 1')

rownum=(source_ws.nrows-1)
colnum=(source_ws.ncols-1)
cline=0
act_cline=0

ARRAY = {}
temp = {}

while(cline<rownum):
    temp["CELLNAME"]=source_ws.cell_value(cline+1,3)
    key = temp["CELLNAME"]
    ARRAY[key]=temp
    cline=cline+1

for key in ARRAY.keys():    
    print(key+"\t"+ARRAY[key]["CELLNAME"])