❤️ 专栏简介 :本专栏我们会从最基础的内容开始学习Docker的相关内容,循序渐进的掌握Docker知识并进行实战。
☀️ 专栏适用人群 :适用于具备基础 Linux 知识的 Docker 初学者,当然希望各位有经验的docker开发者不吝赐教。
🌙专栏特点:通俗易懂、图文并茂、非常详细;
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
🍄 专栏地址:https://blog.csdn.net/anchenliang_1002/category_11878561.html
本小节的内容
1、我们会使用python语言,基于flask web框架,开发一个自己的网站
,即开发一个后端的网站代码。
2、开发Dockerfile
,部署该代码,生成镜像
3、其他人基于该镜像,docker run就可以在电脑上跑起来我们开发的这个网址
实现过程如下:
1.1 编写flask的python代码
首先,在本地创建一个learn_docker的文件夹;然后在里面创建一个test_flask.py文件:
mkdir learn_docker
touch test_flask.py
vim test_flask.py
然后在vim中按:
输入set paste
进入粘贴模式,将以下内容复制进文本中
#coding:utf8
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
return "hello docker,i am chaoge."
if __name__=="__main__":
app.run(host='0.0.0.0',port=8080)
第一行代表以下代码使用utf8格式,这样就能识别中文了;
第二行表示导入flask包;
第三行表示定义app变量;
第四行表示我们要访问网站的/
路径
第五行第六行是要显示的内容;
第七行第八行是启动该web框架,0.0.0.0
代表绑定本机所有网卡,端口是8080
1.2 编写Dockerfile
创建一个Dockerfile文件,并将以下内容复制进去:
FROM centos:7.8.2003
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 python-devel python-pip -y
RUN pip install flask
COPY test_flask.py /opt
WORKDIR /opt
EXPOSE 8080
CMD ["python","test_flask.py"]
第一行表示我们基于的镜像是centos:7.8.2003;
第二行第三行是在配置yum源;
第四行是生成缓存;
第五行表示安装python的各种依赖工具;
第六行表示安装flask框架;
第七行使用COPY
指令将宿主机中我们刚刚编写的test_flask.py
文件拷贝到容器内的/opt目录下;
第八行是使用WORKDIR
指令切换到/opt目录下;
第九行是使用EXPOSE
指令开放容器的8080端口;
第十行表示在docker run
启动该容器时,容器内部默认执行python test_flask.py
命令。
完成后如下图所示:
注意:在第七行中我们拷贝test_flask.py
文件时并没有指定路径,所以默认是当前路径,即Dockerfile所在路径;所以test_flask.py
文件和Dockerfile文件必须是平级存在于同一目录下的;
1.3 构建镜像
指令为:
docker build -t 'anchenliang/my_flask_web' .
意思是构建镜像并修改tag名字为anchenliang/my_flask_web
最后一句话出现安装成功的提示才是安装成功:
1.4 运行镜像,生成容器
直接运行镜像,并映射端口,生成容器
docker run -d --name my_flask_web_1 -p 90:8080 anchenliang/my_flask_web
1.5 访问宿主机,查看效果
访问我们的宿主机ip:90
,结果如下:
1.6 修改网站内容
我们这个程序是跑在容器里的,如果修改网站内容,我们应该容器内的应用程序。
方法1:修改宿主机的代码,然后修改Dockerfile,重新构建;
方法2:进入到已经运行的容器内,修改代码,重启容器即可。
首先,使用docker exec
指令进入到正在运行的容器内部
然后修改里面的test_flask.py文件,修改后,退出exit
退出容器;然后docker restart 4efde9370b50
重启该容器即可。