dockerfile传参问题和权限问题

这篇具有很好参考价值的文章主要介绍了dockerfile传参问题和权限问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

dockerfile传参问题和权限问题

一、docker传参

在工作中,使用dockerfile构建镜像的时候,随着业务越来越多,流水线也越来越多,这时候就需要构建一些通用流水线,而通用流水线最大的问题,就是需要传递参数,通过传递不同的参数去构建不同的服务

1、–build-arg

这个参数可以让你在docker build的时候,指定需要传递的参数

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定义一个默认参数,不传默认就用这个

COPY $SERVICENAME /biz-code/$SERVICENAME

这个地方就是具体使用

3、传递参数

docker build -t ${HARBOR_ADDRESS}/${REGISTRY_DIR}/${IMAGE_NAME}:${TAG} --build-arg SERVICENAME=${SERVICENAME} .

–build-arg SERVICENAME=${SERVICENAME}

然后使用–build-arg加dockerfile中定义的变量来传递需要的参数,我这边这些参数都是通过jenkinsfile在构建的时候获取的

dockerfile传参问题和权限问题

这里使用的是选项参数,不会用的老铁可以百度一下

二、权限问题

1、在dockerfile中传递参数的权限问题

我这边在使用如下dockerfile构建的时候,可以获取到对应的参数,但是在CMD这一步,一直报权限问题

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

dockerfile传参问题和权限问题

/bin/sh: 1: ./: Permission denied

我试了各种方法,授权、使用root,查看jenkins构建结果是有权限的,结果还是都不行。。。

我这边猜测可能的一个原因,传递进来的参数可能CMD解析不了,CMD去执行的时候可能还是把它当成变量去执行,而没有解析成message服务,当然,只是猜测,大佬们有其他想法可以评论一下

然后我的解决方法是这样,通过awk去获取当前目录下的这个服务名,然后授权执行

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}')

然后就成功了~~

hahah文章来源地址https://www.toymoban.com/news/detail-426325.html

到了这里,关于dockerfile传参问题和权限问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 列表进入详情页传参问题(vue的问题)

    例如商品列表页面前往商品详情页面,需要传一个商品id; c页面的路径为 http://localhost:8080/#/detail?id=1 ,可以看到传了一个参数 id=1 ,并且就算刷新页面id也还会存在。此时在c页面可以通过id来获取对应的详情数据,获取id的方式是 this.$route.query.id vue传参方式有:query、params+动

    2024年01月21日
    浏览(36)
  • 列表进入详情页的传参问题(vue的问题)

    c页面的路径为 http://localhost:8080/#/detail?id=1 ,可以看到传了一个参数id=1,并且就算刷新页面id也还会存在。此时在c页面可以通过id来获取对应的详情数据,获取id的方式是 this.$route.query.id vue传参方式有:query、params+动态路由传参。 说下两者的区别: 1.query通过path切换路由,

    2024年01月19日
    浏览(36)
  • Dockerfile创建镜像异常问题解决

    dockerfile文件一定要在Linux创建,windows会默认结尾带 /r 会导致生成的镜像文件无法启动,且报错十分诡异。 镜像启动查看日志可以通过 docker logs [容器ID] 来查看 由于是启动jar包,docker logs 显示的报错是: docker logs [容器id] unable to access jarfile 会让人错误的认为是jar相关命令出

    2024年02月09日
    浏览(39)
  • jar程序部署的外部依赖和按名传参和shellUtil传参json串及返回pid问题

    java -cp 命令跟jar路径和指定的编译类(main)路径; java -jar 跟jar路径也ok,但是需要打包的时候指定 jar包里的 MANIFEST.MF 文件中 Main-Class项的值 。即默认运行的main函数。 使用getopts命令。 getopts命令识别出各个入参选项之后(用:分隔),遍历case判断。其操作中,有两个\\\"常量

    2024年02月16日
    浏览(38)
  • 原生app 打开uni小程序 传参问题

    最近要在一个原生app的基础上开发新功能,  新功能和原app没有太多交集, 考虑到原生app开发复杂,工期较长, 决定在原生app的基础上整合uni小程序, 使用uniapp开发新功能, 在整合的过程中遇到了几个问题, 这里记录一下, 一.  uni小程序的文档在3.5.3这个版本, 目前为止,他的文档还

    2024年02月09日
    浏览(34)
  • WPF ContextMenu 的绑定和传参问题

     在 ListView 列表中,存在多个项目,每个项目都需要右键菜单进行操作。这时一般情况下定义的采用以下方式:即在模板中定义的控件内(在当前示例中是 Border ),定义一个 ContextMenu 。Command在ViewModel中定义。

    2024年02月06日
    浏览(42)
  • 借助 Mybatis 的动态 SQL 解决传参不确定问题

    在上一篇的:Mybatis 操作数据库的基本 CRUD 以及查询操作详析_@糊糊涂涂的博客-CSDN博客中介绍了Mybatis使用固定SQL语句操作数据,本篇介绍 Mybatis 一个强大的特性:动态SQL。 动态 SQL 解决什么问题?         那当我们要执行的业务逻辑有很多,比如给成绩表中插入一行数据

    2024年02月15日
    浏览(38)
  • 第三方组件及计算属性传参的问题解决方式

    唉,好想玩滋嘣。 表格数据某一列需要用的计算属性时,模板中使用计算属性 fullName 就会直接调用 fullName 函数,而在模板中 fullName(item) 相当于 fullName()(item) ,此处为函数柯里化。 封装好的组件的事件回调函数想要传其它参数,事件的回调直接写 :before-upload=\\\"beforeUpload(\\\'a\\\')

    2024年02月05日
    浏览(60)
  • etcd官方docker镜像及dockerfile问题处理

    解决下我之前etcd使用docker镜像启动的坑 1、问题镜像docker-file: 这个dockerfile看着看不出来问题,但如果有人真的执行我之前两篇文章的文件,就会有问题,什么问题呢,无法连接到etcd,由于我是刚装上docker,排查了一圈,包括docker网络及是否是本地docker的网络问题,排查了

    2024年01月21日
    浏览(37)
  • 学习笔记230804---restful风格的接口,delete的传参方式问题

    如果后端提供的删除接口是restful风格,那么使用地址栏拼接的方式发送请求,数据放在主体中,后端接受不到,当然也还有一种可能,后端在这个接口的接参设置上是req.query接参。 问题描述 今天遇到的问题是,delete接口,需要传id,后端需要id的数据类型是lang类型,使用数

    2024年02月12日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包