dockerfile实例

2019-01-24  本文已影响0人  Elvis_zhou

docker build steps

  1. 编辑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



     #!/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 .
  1. 运行image
   docker run r.fastonetech.com:5000/fastone-cwl cwl-runner
  1. 上传镜像

   docker push r.fastonetech.com:5000/fastone-cwl
上一篇 下一篇

猜你喜欢

热点阅读