docker入门:docker部署flask项目

1.我的目的

      在docker环境中运行我的flask代码,并能够成功访问

2.实现

      (1)首先我们将docker环境启动(可以docker ps一下,有查询结果的返回docker就是成功启动了)
在这里插入图片描述
      (2)将自己的flask项目用到包导出
               ①  进入flask项目目录
               ②  在项目主目录下导出(cat检查一下文件内容是否导出成功)

	pip freeze > requirements.txt

               ③  在项目主目录下创建Dockerfile文件,内容如下,需要根据自己的项目有所更改

	FROM python:3.8      # 基础镜像-python的版本
	WORKDIR /usr/src/app	# 工作路径
	COPY requirements.txt ./	# 复制文件到容器中
	RUN pip install --no-cache-dir -r requirements.txt # 下载依赖包
	COPY . .
	CMD [ "python", "./demo1.py" ]   # 启动容器时自动执行的命令,我的flask启动命令写在demo1.py函数里,所以这里我直接去运行此文件 使容器一运行我的flask项目也开始运行

               ④  build镜像:
                    我直接cd到flask项目主目录下开始build,我的Dockerfile就在此路径下

	docker build -t flaskdemo . 
	#	-t :指定要创建的目标镜像名
	#	. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

                    通过docker images查看镜像情况
在这里插入图片描述
               ⑤  启动容器

	docker run -d -p 127.0.0.1:6200:5000 --name mydemo1 flaskdemo
	#	-d :使容器在后台运行
	#	-p :端口映射,即访问本机的前者(6200)相当于访问docker容器中的后者(5000)

                    通过docker images查看镜像情况
在这里插入图片描述

3.效果

      (1)访问本机6200端口
在这里插入图片描述
    成功访问到flask项目的首页,点击也能成功跳转
在这里插入图片描述

4.docker背景知识

      (1)docker的镜像类似于linux的root文件系统,不会有动态数据,也不会被改变;容器是以镜像为基础,创建一个存储层,之后此容器的运行在此存储层之上,容器被销毁时存储层也会被清除。

      (2)Dockerfile-FROM:
              自定义镜像的构建也是要基于docker的基础镜像的,比如我的flask项目是用python3.8写的,那就指定基础镜像为python3.8

      (3)Dockerfile-RUN:
              在build的同时运行命令;
              每一个RUN命令都会启动一个容器,执行命令,然后保存此次操作对存储层的修改;如果要修改每一层的工作路径,就用WORKDIR;

      (4)Dockerfile-CMD:
              在Docker中的每一个容器就是一个进程,在进程启动的时候要指定运行参数,CMD就是主进程运行命令;

      (5)Dockerfile-WORKDIR:
              指定工作路径----如果路径不存在,会自动创建

      (6)Dockerfile-COPY:
              通过 /bin/bash 进入查看我们的文件复制情况 :进入/usr/src/app目录下,可以看到我们flask下所有文件确实都被复制到此目录下了
在这里插入图片描述

      (7)可能你会有疑问:为什么这里能用/bin/bash?这会进入到哪里?这里我的理解是 我们的python项目也是需要在一个"系统"上运行的,docker启动容器的时候就会模拟出一个"隔离的系统"(实际并不是系统,只是这样说容易理解)来运行我们的python项目,并提供了一个shell供我们使用,这就是/bin/bash。

               每个容器都会有一个 pid 为 1 的进程,如果这个进程执行结束了,容器也就 close 了;可以看到pid为1的进程就是我们初始化容器时候的进程
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值