容器技术经历过多年发展后,已经被越拉越多的公司采用,同时越来越多的软件支持以容器的形式进行分发,我们今天就以python测开平台为例采用编写dockerfile文件并编译,生成容器镜像。

Dockerfile语法介绍

首先我们先通过编写完成的dockerfile文件了解下语法

FROMpython:3.6-alpine

COPY . /work

WORKDIR /work

RUN pip3 install -r requirements.txt

CMD python3 docker.py

RUNpip3install-rrequirements.txt

CMDpython3docker.py

from指令用于指定基础镜像,语法如下:

FROM [: | @] [AS ]

这里我们指定基础镜像为python,tag为3.6-alpine,其中3.6为python的版本,alpine是linux操作系统,关于alpine的更多信息可以参考官网https://www.alpinelinux.org/。

copy指令用于复制文件到容器中,语法如下:

COPY

这里我们将当前目录下的所有内容复制到容器中的/work目录下,容器会为我们自动创建work目录。

workdir指令用于指定工作目录,语法如下:

WORKDIR

这条指令运行效果相当于cd

run指令用于指定构建镜像时的指令,可以是任何指令,语法如下:

RUN

我们通过run指令告诉容器需要通过pip安装依赖,依赖使用requirements.txt描述。

cmd指令用于指定容器运行的内容,语法如下:

CMD command param1 param2

我们这里使用python启动平台。

编译镜像

我们在项目根目录下输入以下指令进行镜像编译

docker build -f Dockerfile .

注意指令末尾的点不能省略,编译过程较缓慢请耐心等待。

$ docker build -f Dockerfile .

Sending build context to Docker daemon 14.34kB

Step 1/5 : FROM python:3.6-alpine

---> 8880aaf979d2

Step 2/5 : COPY . /work

---> 57277dc5819c

Step 3/5 : WORKDIR /work

---> Running in bc22b0faee90

Removing intermediate container bc22b0faee90

---> 64b3f3ca976a

Step 4/5 : RUN pip3install-r requirements.txt

---> Running in 96f1f7faa2b7

Collecting flask==1.1.1

Downloading https://files.pythonhosted.org/packages/9b/93/628509b8d5dc749656a9641f4caf13540e2cdec85276964ff8f43bbb1d3b/Flask-1.1.1-py2.py3-none-any.whl (94kB)

Collecting Werkzeug>=0.15

Downloading https://files.pythonhosted.org/packages/ce/42/3aeda98f96e85fd26180534d36570e4d18108d62ae36f87694b476b83d6f/Werkzeug-0.16.0-py2.py3-none-any.whl (327kB)

Collecting click>=5.1

Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)

Collecting itsdangerous>=0.24

Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl

Collecting Jinja2>=2.10.1

Downloading https://files.pythonhosted.org/packages/65/e0/eb35e762802015cab1ccee04e8a277b03f1d8e53da3ec3106882ec42558b/Jinja2-2.10.3-py2.py3-none-any.whl (125kB)

Collecting MarkupSafe>=0.23

Downloading https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz

Building wheelsforcollected packages: MarkupSafe

Building wheelforMarkupSafe (setup.py): started

Building wheelforMarkupSafe (setup.py): finishedwithstatus'done'

Created wheelforMarkupSafe: filename=MarkupSafe-1.1.1-cp36-none-any.whlsize=12629sha256=8f9be0cc4e0b219015ffcd57680fb4b3b10a0a9f99acc9baff5b202dd0d0ee41

Storedindirectory: /root/.cache/pip/wheels/f2/aa/04/0edf07a1b8a5f5f1aed7580fffb69ce8972edc16a505916a77

Successfully built MarkupSafe

Installing collected packages: Werkzeug, click, itsdangerous, MarkupSafe, Jinja2, flask

Successfully installed Jinja2-2.10.3MarkupSafe-1.1.1Werkzeug-0.16.0click-7.0flask-1.1.1itsdangerous-1.1.0

Removing intermediatecontainer96f1f7faa2b7

---> c65963ff7ac3

Step5/5: CMD python3 docker.py

---> Running in 42eadb45fd22

Removing intermediatecontainer42eadb45fd22

---> c4176f52ee28

Successfully built

SECURITYWARNING: Youarebuilding a Docker imagefromWindows against a non-Windows Docker host. All filesanddirectories addedtobuildcontextwill have'-rwxr-xr-x'permissions. Itisrecommendedtodoublecheckandresetpermissionsforsensitive filesanddirectories.

我们可以看到名为c4176f52ee28的容器被成功编译,输入

docker run -it -p 5000:5000c4176f52ee28

启动容器并打开浏览器访问

注:Mac需替换192.168.99.100为自己的机器IP。

附录

平台代码

fromflaskimportFlask

app = Flask(__name__)

@app.route('/')

def index():

return"flask in docker!"

if__name__ =='__main__':

app.run(

host="0.0.0.0",

port=5000,

)

requirements.txt文件

flask==1.1.1

Dockerfile文件

FROMpython:3.6-alpine

COPY . /work

WORKDIR /work

RUN pip3 install -r requirements.txt

CMD python3 docker.py

作  者:Testfan 大猫老师

出  处:微信公众号:自动化软件测试平台

版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

python 镜像_python测开平台使用dockerfile构建镜像相关推荐

  1. 03@Dockerfile构建镜像

    文章目录 Dockerfile构建镜像 一.Dockerfile的简述 二.Dockerfile使用参数(参数编写为大写) 1.FROM 2.MAINTAINER 3.RUN 4.CMD 5.ADD ...

  2. docker:dockerfile构建镜像

    目录 一.dockerfile概念 1.dockerfile的原理就是镜像分层 二.docker镜像的创建 1.基于现有镜像创建 2.基于本地模板创建 3.基于dockerfile创建 3.1 doc ...

  3. Docker 从Dockerfile 构建镜像 :build 命令的用法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Dockerfile 创建完成后,可以使用 docker build 命令根据 Dockerfile ...

  4. 实战:Docker容器虚拟化技术(使用DockerFile构建镜像并搭建 swarm+compose集群)5

    实战:Docker容器虚拟化技术 (使用DockerFile构建镜像并搭建 swarm+compose集群)5 要求: 使用DockerFile构建镜像并搭建 swarm+compose集群 在Swa ...

  5. Dockerfile 构建镜像以及镜像优化的方法

    点击查看<docker容器安装配置及创建容器> 一. Docker commit 构建镜像 docker commit 构建新镜像三部曲 运行容器 修改容器 将容器保存为新的容器 [roo ...

  6. Dockerfile构建镜像最佳实践

    参考文章:Dockerfile构建镜像最佳实践 在前文Dockefile及命令详解中我们已经学习了如何通过Dockerfile构建镜像以及命令的详细说明,但是在生产环境或项目使用时如何构建出一个尽可能 ...

  7. 【Docker】Dockerfile构建镜像与命令详解

    前言 传统方式部署集群,你需要在每台机器搭建环境,配置各种中间件,这样不但效率低下,而且很难保证环境的一致性,而且配置如果有改动,需要挨个机器修改. 有了Docker,上述问题都能解决.但是官方镜像大 ...

  8. 实战:Dockerfile构建镜像-2022.2.28

    实战:Dockerfile构建镜像-2022.2.28 目录 文章目录 实战:Dockerfile构建镜像-2022.2.28 目录 实验环境 实验软件 1.Dockerfile概述 2.Docker ...

  9. 使用Dockerfile构建镜像

    Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令翻译真正的Linux命 ...

  10. Docker使用Dockerfile构建镜像

    2019独角兽企业重金招聘Python工程师标准>>> Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条 ...

最新文章

  1. 福布斯:14位技术专家预测,未来哪些行业将被AI颠覆?
  2. 如何格式化电脑_U盘提示格式化后如何恢复数据
  3. 3,SQL语句及数据库优化
  4. haproxy实现discuz论坛的动静分离和负载均衡
  5. Zookeeper的一致性是什么情况?
  6. Android开发笔记——Android 9发送通知
  7. Centos下通过wget方式下载jdk8
  8. 一文说透架构设计的本质
  9. linux用grep查找文件内容
  10. 螃蟹为什么横着走,今天为大家介绍为什么螃蟹横着走
  11. 三.Mybatis 多对一与一对多
  12. visio之图案填充
  13. 基于c语言的移动通信调制,π/4-QPSK调制方式及其与GSMK调制方式的比较
  14. 基于FPGA的多人表决器(VHDL)
  15. java封装 继承 多态 的概念和作用
  16. S MT 精密电阻 对照 表
  17. oracle查询 view,oracle view
  18. 如何打开计算机无线功能灰色,计算机没有wifi,仅显示宽带连接. 右键单击灰色的无线网络连接图...
  19. PPT模板下载(二)--- 新科技、区块链
  20. 计算机拨打比赛策划书,电脑打字擂台赛活动策划书

热门文章

  1. 斐波那契数列基本性质
  2. jenkins+maven+svn+npm自动发布部署实践
  3. Ubantu 安装ftp 之诡异
  4. Windows API一日一练(40)CreateRectRgn和CombineRgn函数
  5. java怎么模拟rfid_如何使用RFID阅读器获取RFID标签上印刷的序列号?
  6. JVM初识之类加载过程
  7. Spring Cloud Zuul路由网关(学习总结)
  8. clock_gettime接口和linux时间系统
  9. 27.3. Directory and File System Related
  10. Linux paste命令