docker部署Python网站

docker部署Python网站,第1张

趁着51又把docker基础重新学习了一遍,之前都是看课程,很少动手实践,看着像会了,其实提笔忘字,现在记忆力不行了,很多东西不练一练,基本看完就忘了,linux学习其实没那么难,多练练就好了~

最近的docker是跟于超哥学习的,大家可以到B站搜下课程支持一下,下边自己实践一下~

大概思路就是利用Python的flask框架,简单写一个Python文件跟docker的Dockerfile文件构建出一个images镜像,然后通过容器的8080端口映射到宿主机的8080端口跑起来,通过宿主机改端口来验证试验是否成功,并且介绍两种容器修改文件内容方式~

这是我提前写好的,简单介绍一下~

1、创建Python flask框架文件
vim xuyuhan_flask.py          #编写一个Python文件,名字可以自定义,Python文件后边后缀必须是.py结尾,自己打一下印象深一点,解释可能不太正确,自己也是小白
#xuyuhan:utf8             #指定UTF8格式,使中文不会出现乱码
from flask import Flask   #这是Python中的包导入,意思是从flask框架中导入flask模块
app=Flask(__name__)       #相当于shell中定义一个变量赋值
@app.route("/")           #写一个访问路由,此处的访问地址为 http://192.168.230.210/  的意思
def web():                #定义一个函数,如果上边的访问路由为/hello,那么此处可以写成 def hello
	return "hello docker, i am xuyuhan"      #return返回值,相当于shell中的echo
if __name__=="__main__":                   
        app.run(host='0.0.0.0',port=8080)        #0.0.0.0相当于绑定该容器所有网口,对外暴露8080端口

2、创建Dockerfile文件
vim Dockerfile    #编写一个Dockerfile文件,记得第一个字母必须大写,不懂得可以学习下docker镜像构建,相当于自己写一个镜像构建脚本而已
FROM centos:7.2.1511     #镜像使用时优先在本地查找,没有再到网上下载,我这里本地已经有这个版本了
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo   #更改该容器源为阿里云源
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo            #更改该容器源为阿里云源
RUN yum makecache fast          #清除原先的缓存
RUN yum install python3-devel python3-pip -y     #下载Python3依赖,必须是Python3才不会报错
RUN pip3 install -i https://pypi.douban.com/simple flask    # -i参数为指定下载源地址为豆瓣差不多的意思
COPY xuyuhan_flask.py /opt            #复制我当前目录的xuyuhan_flask.py文件到容器内/opt这里的意思
WORKDIR /opt                          # WORKDIR相当于cd命令的意思,就是进入容器后默认切换到到/opt这里
EXPOSE 8080                           #暴露该容器8080端口
CMD ["python3","xuyuhan_flask.py"]     #CMD相当于执行命令的意思,默认用Python3执行xuyuhan_flask.py的意思,这里的每一个命令后边必须写上,号,比较长

写好以上两个文件,检查没问题就可以开始构建了~

3、构建docker images
[root@docker ~]# docker build -t 'centos7.2web:xuyuhan' .         # -t指定'容器名:tag标签  --no-cache 不使用之前产生的缓存进行构建,后边的点表示构建当前目录下的Dockerfile文件,记得要跟前边有个空格



构建过程大概3分钟,因为有些东西要在线下载,所以也看网速,过程涉及链接啥的会出现红色标识,只要不出现error报错,都是小事情可以忽略,直到看到successfully,然后查看本地镜像~

4、使用新docker images创建容器

接下来试下运行该镜像

[root@docker ~]# docker run -d --name xuyuhanweb -p 100:8080 centos7.2web:xuyuhan
e69668f3db0c901c631a1f25f2320e4c264ab6d2e75c6716a2962dffd3680a55

# run表示启动并运行  -d表示后台运行  --name 指定容器生成名字  -p 100:8080 前边100端口是宿主机的,后边8080是该容器的  在后边centos7.2web:xuyuhan  镜像名:指定tag的意思
#生成一串ID表示创建成功
[root@docker ~]# docker ps   #查看docker运行的容器

5、访问该容器web页面

访问网页:宿主机IP:100端口,实验成功~

[root@docker ~]# docker exec -it e69668f3db0c /bin/bash
[root@e69668f3db0c opt]# 
#通过 exec -it 容器ID /bin/bash   进入容器内,输入exit退出,不影响该容器此时后台运行

6、docker特殊命令

一些用起来比较爽的暴力命令,生产环境慎用!!!

[root@docker ~]# docker ps -aq    #列出所有存活或死去的docker容器

[root@docker ~]# docker stop `docker ps -aq`   #强制所有正在运行的容器

[root@docker ~]# docker rm -f `docker ps -aq`    #强制删除所有存活或死去的docker容器,慎用指数三颗半星
7、增删、修改容器内文件

有很多种方式

一种是直接修改Dockerfile文件内ADD 或 COPY 指令内容,重新构建镜像。。。

或者exec -it 进入容器内进行修改

还能通过docker cp指令来将容器外文件传递到docker容器内

docker cp 本地文件路径 容器ID或容器NAME:容器内路径



还有这些

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/800798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-07
下一篇 2022-05-07

发表评论

登录后才能评论

评论列表(0条)

保存