docker python flask 构建镜像 + 运行

  1. 构建空镜像
    参照:https://www.jianshu.com/p/cff450477da2
    从头开始的话,

#需要依赖的基础镜像,我这里就直接使用最新的ubuntu镜像,注意必须放在开头,相当于镜像里的操作系统,也可以用centos

FROM ubuntu
#接下来是维护者信息
MAINTAINER panleiming 1025624185@qq.com
#设置环境变量
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
#设置时区,容器启动的默认时间与北京时间不一致,需要进行设置
RUN ln -s -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#更新索引
RUN apt-get update
#安装python3, pip3, flask和cx_Oracle
RUN apt-get install -y python3
RUN apt-get install -y python3-pip
RUN pip3 install flask
RUN pip3 install cx_Oracle

把以上这些东西写到dockerfile里面,然后在命令行输入

docker build -t IMAGE_NAME:TAG .

(注意最后有个点),比如

docker build -t tf:v2 .

到这里,一个空的镜像就算做好了,镜像的名字叫tf,冒号后面的v2是tag,-t是一个参数,具体意义需要查。这个镜像是基于UBUNTU的,进行了Ubuntu的更新,安装了python3,pip3,flask和cx_Oracle
关键字RUN的意思就是你想要在操作系统上进行什么命令,把
apt-get install -y python3
pip3 install cx_Oracle
单拿出来看,其实就是Ubuntu和pip命令

  1. 往里面放东西
    可以在刚才的dockerfile里面继续往下写,也可以重新另起一个dockerfile
    如果重新另起的话,第一句话就应该是
    FROM tf:v2
    #表示引入这个镜像
    #设置两个flask相关的变量
ENV FLASK_APP=app.py
ENV FLASK_ENV=development

#设置工作目录

WORKDIR /opt/demo

#设置工作目录的意思就是,给一个目录的起点,所有其他相对目录都是从这个工作目录开始算起

ADD code/ .

#表示把当前实体机当前目录下的code文件夹放到工作目录下面,就是opt/demo,后面的 . 表示工作目录本身

EXPOSE 80

#表示对外暴露80端口
#在本例中没有什么用,就是说一下EXPOSE这个东西

  1. 启动flask
    之前ADD code/ . 已经将demo代码放入了镜像中的/opt/demo目录。代码包括app.py sql.txt 和 conf.ini,一个很简单的demo。
    在环境变量FLASK_APP中已经设置了app.py,所以只要在代码所在目录中运行flask run,那么就是用flask来跑app.py
    启动flask有两种方法,
    3.1 先启动镜像,进入镜像,然后手动启动flask
    命令行输入
docker run -it -p 5000:5000 tf:v2 /bin/bash

表示用-i -t的方式来运行tf:v2
-p 5000:5000表示端口映射,前面的端口是外部环境的端口,后面的端口表示镜像的端口,通过这句话将两个端口连接起来。访问外部环境的5000端口,就相当于访问镜像的5000端口
/bin/bash表示运行起来以后,用命令行进到容器里面操作
-i好像是表示交互方式
执行以上命令以后,就进入到容器内部,目录是之前设置好的opt/demo,里面有三个文件,app.py sql.txt conf.ini
通过flask启动,输入

flask run --host 0.0.0.0

–host 0.0.0.0表示flask对外提供服务
到这里,就算是把docker里面的服务器启动了,在外面的实体机的浏览器输入127.0.0.1:5000,就可以访问到hello world
3.2 启动镜像,自动运行flask
修改dockerfile,在最后加上一句话

ENTRYPOINT ["flask", "run", "--host", "0.0.0.0"]

表示启动镜像以后自动执行的命令,方括号里面就是要执行的命令。
原命令是

flask run --host 0.0.0.0

所有内容按空格分开,加双引号。
因为dockerfile改了,所以需要重新制造镜像。
然后启动镜像,输入

docker -d -p 5000:5000 tf:v2 

-d表示后台运行,没有-i是因为这里不需要交互了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值