内容简介:基于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搭建的程序了!
以上所述就是小编给大家介绍的《1.构建docker的flask镜像》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!
- 根据Dockerfile构建镜像
- 构建go应用镜像
- 使用Dockerfile构建镜像
- Docker 构建镜像
- 利用Makisu构建容器镜像
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Designing for Emotion
Aarron Walter / Happy Cog / 2011-10-18 / USD 18.00
Make your users fall in love with your site via the precepts packed into this brief, charming book by MailChimp user experience design lead Aarron Walter. From classic psychology to case studies, high......一起来看看 《Designing for Emotion》 这本书的介绍吧!