美文网首页
dockerfile实例

dockerfile实例

作者: Elvis_zhou | 来源:发表于2019-01-24 15:44 被阅读0次

docker build steps

  1. 编辑dockerfile文件
  • 由于本次镜像的有些依赖自己也有依赖,为了保持镜像的精简性,这里采用分步制作,所谓分步,就是把依赖在第一个镜像内编译完成之后,复制给第二个镜像,这样第二个镜像内就不会有编译工具等不需要的东西了。
  • 编辑dockerfile

     # first step

     FROM python:2.7-alpine as builder  # 每个FROM就是制作一个指定的基础镜像

     

     # construct the virtualenv

     ADD requirements.txt requirements.txt  # 把项目需要的依赖映射到docker镜像中

     # RUN命令是运行指定命令,就是在镜像内的终端执行命令

     # sed:为直接修改文件,这里是修改了镜像内的源地址

     # && \ :是把多个命令放在一行执行

     # apk: 安装软件 ,由于有些依赖需要编译,这里还需要下载安装包-dev(-dev是开发者在编辑项目时需要的东西,安装-dev结尾的软件之后会自动把它的依赖安装好)

     # 最后是为了安装虚拟环境和安装requirements的包

     RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \

         apk --no-cache add alpine-sdk libxml2-dev linux-headers libxslt-dev && \

         pip install virtualenv && \

         virtualenv /.venv && \

         /.venv/bin/pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

     

     # second step

     FROM python:2.7-alpine  # 同样制作一个指定的基础镜像

     

     COPY --from=builder /.venv /.venv  # 把第一个镜像的虚拟环境copy过来 

     ADD ./src /fastone-cwl  # 把项目映射到镜像内

     # sed:为直接修改文件,这里是修改了镜像内的源地址

     # find —— add :此步为检测复制来的虚拟环境中的路径,对比缺少哪些包,会自动安装对应的包

     # 在第一步中额外安装的包需要在add后面添加,-dev结尾的就可以舍弃了

     # ln -s: 软连接,把cwl-runner放在bin目录下,可直接执行

     RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \

         find /.venv/ -name *.so | \

         xargs scanelf -n  | \

         awk 'NR>1 {print $2}' | \

         tr ',' '\n' | \

         sort | \

         uniq | grep -v libpython | \

         while read so; do echo so:$so; done | \

         xargs apk --no-cache add nodejs && \

         ln -s /fastone-cwl/cwl-runner /usr/bin

  • 由于我们用的虚拟环境,所以写好文件之后需要切换环境,这里要改cwl-runner中python在shell的位置


     #!/usr/bin/env python  # 修改这个

     import sys

     sys.path.append('..')

     from fastone_cwl.cwl_runner import main

     sys.exit(main(sys.argv[1:]))

     

     **************************************************************************

     **************************************************************************

     #!/.venv/bin/python

     import sys

     sys.path.append('..')

     from fastone_cwl.cwl_runner import main

     sys.exit(main(sys.argv[1:]))
  1. 执行build命令

     docker build -t r.fastonetech.com:5000/fastone-cwl .
  • build过程中可能会出现错误,必要时根据错误log修改dockerfile
  • 这里报错就是少了libxml2 libxml2-dev两个包
  • 这里少了linux-headers
  • 这里少了libxslt-dev
  • 都添加完成就成功了....
  1. 运行image
   docker run r.fastonetech.com:5000/fastone-cwl cwl-runner
  1. 上传镜像

   docker push r.fastonetech.com:5000/fastone-cwl

相关文章

  • docker的入门实战记录

    docker常用方法: Dockerfile的关键字解析: 实例dockerfile: ###########脚本...

  • dockerfile实例

    下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档。 FROM 指定 base 镜像。...

  • dockerfile实例

    docker build steps 编辑dockerfile文件 由于本次镜像的有些依赖自己也有依赖,为了保持...

  • Docker 构建服务

    单实例服务 创建Dockerfile FROM java:8u111-jdkVOLUME /tmpADD ms-r...

  • Docker 入门

    docker 配置参数说明 实例 配置参数说明( DockerFile 学习): FROM:FROM 是构建镜像的...

  • spring boot 实例之 dockerfile

    这几天体验了一把dockerfile-maven-plugin的使用。 spring boot 项目 创建一个sp...

  • 从零开始docker

    第三天实现ssh连接docker实例为所欲为 一、使用Dockerfile生成docker镜像 按照前两天的教程,...

  • 制作docker镜像-精简

    容器是镜像的一个运行实例,不同的是它带有额外的可写层 Dockerfile run.shcontainer启动时需...

  • docker基础教程四(DockerFile)

    DockerFile 原创者:文思 一、DockerFile是什么 DockerFile是...

  • docker 构建基于 centos7 的 python3.6

    编写 Dockerfile update 之后的 dockerfile 使用 dockerfile 构建 其他问题...

网友评论

      本文标题:dockerfile实例

      本文链接:https://www.haomeiwen.com/subject/vkkhjqtx.html