写点什么

使用 docker 构建时取出构建文件的三种方法

用户头像
耳东
关注
发布于: 3 小时前

随着 docker 的日益深入,docker 除了可以当作运行时的环境以外,也可以在构建打包过程中使用,但是在构建过程中出现了一个问题,那就是如何将构建出的文件放到指定的位置,基于这个问题,想到了如下三个方法


方法一:scp 在构建过程中很自然的想到使用 scp 命令将构建好的文件从容器内部拷贝到固定的地方就好。那么为了可以顺利的使用 scp,需要做安装一些工具、使用一些参数,


  • 安装 openssh-clients ,sshpass

  • -o StrictHostKeyChecking=nodockerfile 如下即可



FROM centos:centos6.6

WORKDIR /work
RUN rpm --rebuilddb \## 安装基础工具 && yum install -y http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm \ && yum install -y openssh-clients sshpass \ && export LANG=en_US.UTF-8 \## 打包过程 && 。。。。## 将打包好的东西拷贝出来 && sshpass -p '111111' scp -o StrictHostKeyChecking=no XXXX.war root@172.18.8.2:/tmp/## 清理 && rm -rf XXXX.war
复制代码


方法二:docker cpdocker 本身也提供了文件拷贝的功能,只不过只有在容器运行时才能进行拷贝,所以拷贝的操作如下:


# docker start AAAA# docker cp AAAA:/var/XXX/XXX.war /var# docker stop AAAA# docker rm AAAA
复制代码


方法三:habitus


上述都是使用 linux 或者 docker 自身的一些特性,其实有一些工具也做了这些事情,比如 habitus,接下来安装工具


curl -sSL https://raw.githubusercontent.com/cloud66/habitus/master/habitus_install.sh | bash


安装好 habitus 工具以后 编写 build files


build.yml


build:  version: 2016-03-14 # version of the build schema.  steps:    builder:      name: builder      dockerfile: Dockerfile.builder      secrets:        id_rsa:          type: file          value: _env(HOME)/.ssh/my_private_key      artifacts:        - /go/src/github.com/cloud66/iron-mountain/iron-mountain        - /go/src/github.com/cloud66/iron-mountain/config.json        - /go/src/github.com/cloud66/iron-mountain/localhost.crt        - /go/src/github.com/cloud66/iron-mountain/localhost.key      cleanup:        commands:          - rm -rf /root/.ssh/
复制代码


发布于: 3 小时前阅读数: 3
用户头像

耳东

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
使用 docker 构建时取出构建文件的三种方法