摘要:基于镜像构建自己的镜像官方镜像地址拉取官方的镜像交互式方式生成一个容器进入交互式容器,查看当前版本设置的阿里云镜像源确认一下是否配置成功我们的使用的是系统使用的是包管理器命令如默认的镜像源也比较慢,我们也换成国内的设
基于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
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27852.html
摘要:基于镜像构建自己的镜像官方镜像地址拉取官方的镜像交互式方式生成一个容器进入交互式容器,查看当前版本设置的阿里云镜像源确认一下是否配置成功我们的使用的是系统使用的是包管理器命令如默认的镜像源也比较慢,我们也换成国内的设 基于alpine镜像构建自己的flask镜像 python官方镜像地址: http://hub.docker.com/_/python 拉取官方的python镜像 doc...
摘要:现在有了之后,部署方式变了更加容易,不容易出现配置错误,环境不一致问题。实际应用中,经常遇到多个容器相配合运行一套应用程序的情况。所以想要将应用运行在容器中,该容器必须将该应用所有的环境依赖安装好。 showImg(https://segmentfault.com/img/remote/1460000017081815); 背景 以前部署应用,需要各种环境配置,各种shell操作...
摘要:现在有了之后,部署方式变了更加容易,不容易出现配置错误,环境不一致问题。实际应用中,经常遇到多个容器相配合运行一套应用程序的情况。所以想要将应用运行在容器中,该容器必须将该应用所有的环境依赖安装好。 showImg(https://segmentfault.com/img/remote/1460000017081815); 背景 以前部署应用,需要各种环境配置,各种shell操作...
摘要:后来真正用的时候才发觉,这个简直是个神器。容器可以被创建启动停止删除暂停等。项目由编写,实现上调用了服务提供的来对容器进行管理。此命令将会停止命令所启动的容器,并移除网络启动已经存在的服务容器。停止已经处于运行状态的容器,但不删除它。 showImg(https://segmentfault.com/img/remote/1460000017531120?w=1200&h=500); ...
摘要:后来真正用的时候才发觉,这个简直是个神器。容器可以被创建启动停止删除暂停等。项目由编写,实现上调用了服务提供的来对容器进行管理。此命令将会停止命令所启动的容器,并移除网络启动已经存在的服务容器。停止已经处于运行状态的容器,但不删除它。 showImg(https://segmentfault.com/img/remote/1460000017531120?w=1200&h=500); ...
阅读 3716·2021-10-12 10:11
阅读 1981·2019-08-30 15:53
阅读 1591·2019-08-30 13:15
阅读 2305·2019-08-30 11:25
阅读 1800·2019-08-29 11:24
阅读 1650·2019-08-26 13:53
阅读 3525·2019-08-26 13:22
阅读 1750·2019-08-26 10:24