1.构建docker的flask镜像

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

内容简介:基于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镜像》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Programming Collective Intelligence

Programming Collective Intelligence

Toby Segaran / O'Reilly Media / 2007-8-26 / USD 39.99

Want to tap the power behind search rankings, product recommendations, social bookmarking, and online matchmaking? This fascinating book demonstrates how you can build Web 2.0 applications to mine the......一起来看看 《Programming Collective Intelligence》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具