1.构建docker的flask镜像

栏目: 服务器 · 发布时间: 5年前

内容简介:基于alpine镜像构建自己的flask镜像python官方镜像地址:

基于alpine镜像构建自己的flask镜像

python官方镜像地址:

http://hub.docker.com/_/python

拉取官方的 python 镜像

docker pull python:3.7-alpine

交互式方式生成一个python容器

docker run -it --name python37 --rm python:3.7-alpine /bin/sh

进入交互式容器,查看当前python版本

python --version

设置pip的阿里云镜像源

mkdir $HOME/.pip/

tee $HOME/.pip/pip.conf <<-'EOF'
[global]
trusted-host=mirrors.aliyun.com
index-url=https://mirrors.aliyun.com/pypi/simple
EOF

确认一下是否配置成功

cat $HOME/.pip/pip.conf

我们的python使用的是alpine系统

alpine使用的是apk包管理器

命令如:

apk add

apk update

apk del

alpine默认的镜像源也比较慢,我们也换成国内的

设置alpine镜像源

echo http://mirrors.ustc.edu.cn/alpine/v3.7/main > /etc/apk/repositories

echo http://mirrors.ustc.edu.cn/alpine/v3.7/community >> /etc/apk/repositories

设置后要执行

apk update && apk upgrade

安装flask

python -m pip install -U flask

编写test.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

@app.route('/abc')
def abc():
    return 'Hello abc'

if __name__ == '__main__':
    app.run()

第一种执行这个py文件方式

python test.py

然后在另一个终端以交互式方式进入这个python容器

docker exec -it python37 /bin/sh

下载curl命令

apk add curl

使用curl访问flask服务

curl localhost:5000

curl localhost:5000/abc

第二种执行这个py文件的方式

# 设置环境变量
export FLASK_APP=/test.py

# flask运行起来
flask run

第三种执行这个py文件的方式

FLASK_APP=test.py flask run

根据上面的操作步骤,我们可以来编写Dockerfile生成自己的flask镜像

先退出上面的交互式容器,按:ctrl+D

创建一个flask目录,并进入

mkdir flask

cd flask

创建一个pip.conf文件,将pip镜像源写进去

tee pip.conf <<-'EOF'
[global]
trusted-host=mirrors.aliyun.com
index-url=https://mirrors.aliyun.com/pypi/simple
EOF

编写Dockerfile文件

FROM python:3.7-alpine
RUN echo http://mirrors.ustc.edu.cn/alpine/v3.7/main > /etc/apk/repositories && \
    echo http://mirrors.ustc.edu.cn/alpine/v3.7/community >> /etc/apk/repositories
RUN apk update && apk upgrade
RUN mkdir $HOME/.pip/
COPY ./pip.conf $HOME/.pip/
RUN pip install flask
EXPOSE 5000
CMD ["flask", "run"]

执行docker build命令进行镜像构建

docker build -t myflask:1.0 .

确认是否构建成功

docker images

ok!镜像构建成功!

怎么运行??

创建一个myapp目录

mkdir myapp

放入上面的test.py文件

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

@app.route('/abc')
def abc():
    return 'Hello abc'

if __name__ == '__main__':
    app.run()

然后通过刚刚构建的镜像生成我们的容器

docker run --name myapp --rm -d -p 8080:5000 -v ~/myapp:/app -e FLASK_APP=/app/test.py myflask:1.0

确认容器是否启动

docker ps

恩,启动了!

但是我们无法通过外网访问服务器ip的8080端口访问到容器里面

为什么?

flash默认只允许本机访问!

怎么办?

停掉刚刚生成的容器

docker stop myapp

重新生成容器,指定允许ip为0.0.0.0,然外部可以访问

docker run --name myapp --rm -d -p 8080:5000 -v ~/myapp:/app -e FLASK_APP=/app/test.py myflask:1.0 flask run -h 0.0.0.0

通过外网浏览器访问

http://服务器ip:8080

ok,可以访问到flask搭建的程序了!

原文链接: http://www.mi360.cn/articles/34


以上所述就是小编给大家介绍的《1.构建docker的flask镜像》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

法律程序的意义:对中国法制建设的另一种思考

法律程序的意义:对中国法制建设的另一种思考

季卫东 / 中国法制出版社 / 2005-1 / 10.0

《法律程序的意义:对中国法制建设的另一种思考》内容为现代程序的概念与特征、现代程序的结构与功能、程序与现代社会、中国法律程序的缺陷、程序建设的程序等。一起来看看 《法律程序的意义:对中国法制建设的另一种思考》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具