dockerfile傳參問題和權(quán)限問題
一、docker傳參
在工作中,使用dockerfile構(gòu)建鏡像的時候,隨著業(yè)務(wù)越來越多,流水線也越來越多,這時候就需要構(gòu)建一些通用流水線,而通用流水線最大的問題,就是需要傳遞參數(shù),通過傳遞不同的參數(shù)去構(gòu)建不同的服務(wù)
1、–build-arg
這個參數(shù)可以讓你在docker build的時候,指定需要傳遞的參數(shù)
2、用法
dockerfile
FROM ccr.ccs.tencentyun.com/chens/golang:1.17.13
ENV ZBE_PATH /biz-code
ARG SERVICENAME=message
COPY $SERVICENAME /biz-code/$SERVICENAME
WORKDIR /biz-code
RUN chmod 777 $(echo `ls -l` |awk -F ' ' '{print $NF}')
USER root
RUN ls -l
CMD ./$(echo `ls -l` |awk -F ' ' '{print $NF}')
ARG SERVICENAME=message
首先需要使用ARG
定義一個默認(rèn)參數(shù),不傳默認(rèn)就用這個
COPY $SERVICENAME /biz-code/$SERVICENAME
這個地方就是具體使用
3、傳遞參數(shù)
docker build -t ${HARBOR_ADDRESS}/${REGISTRY_DIR}/${IMAGE_NAME}:${TAG} --build-arg SERVICENAME=${SERVICENAME} .
–build-arg SERVICENAME=${SERVICENAME}
然后使用–build-arg加dockerfile中定義的變量來傳遞需要的參數(shù),我這邊這些參數(shù)都是通過jenkinsfile在構(gòu)建的時候獲取的
這里使用的是選項參數(shù),不會用的老鐵可以百度一下
二、權(quán)限問題
1、在dockerfile中傳遞參數(shù)的權(quán)限問題
我這邊在使用如下dockerfile構(gòu)建的時候,可以獲取到對應(yīng)的參數(shù),但是在CMD這一步,一直報權(quán)限問題
dockerfile
FROM ccr.ccs.tencentyun.com/chens/golang:1.17.13
ENV ZBE_PATH /biz-code
ARG SERVICENAME=message
COPY $SERVICENAME /biz-code/$SERVICENAME
WORKDIR /biz-code
RUN chmod 777 $SERVICENAME
USER root
RUN ls -l
CMD ./$SERVICENAME
/bin/sh: 1: ./: Permission denied
我試了各種方法,授權(quán)、使用root,查看jenkins構(gòu)建結(jié)果是有權(quán)限的,結(jié)果還是都不行。。。
我這邊猜測可能的一個原因,傳遞進來的參數(shù)可能CMD解析不了,CMD去執(zhí)行的時候可能還是把它當(dāng)成變量去執(zhí)行,而沒有解析成message服務(wù),當(dāng)然,只是猜測,大佬們有其他想法可以評論一下
然后我的解決方法是這樣,通過awk去獲取當(dāng)前目錄下的這個服務(wù)名,然后授權(quán)執(zhí)行
FROM ccr.ccs.tencentyun.com/chens/golang:1.17.13
ENV ZBE_PATH /biz-code
ARG SERVICENAME=message
COPY $SERVICENAME /biz-code/$SERVICENAME
WORKDIR /biz-code
RUN chmod 777 $(echo `ls -l` |awk -F ' ' '{print $NF}')
USER root
RUN ls -l
CMD ./$(echo `ls -l` |awk -F ' ' '{print $NF}')
然后就成功了~~文章來源:http://www.zghlxwxcb.cn/news/detail-426325.html
hahah文章來源地址http://www.zghlxwxcb.cn/news/detail-426325.html
到了這里,關(guān)于dockerfile傳參問題和權(quán)限問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!