Mac 装DockerDesktop 部署flask的操作步骤

一、下载docker

Docker官网.中找到对应的mac下载。
在这里插入图片描述
点进来后,选择自己电脑对应芯片的版本开始下载,我自己是m1芯片的。
在这里插入图片描述

二、在MAC电脑上安装和运行docker

1.双击Docker.dmg打开安装程序,然后将 Docker 图标拖到 Applications 文件夹。

在这里插入图片描述

2. 双击Docker.appApplications 文件夹以启动 Docker。在下面的示例中,Applications 文件夹处于“网格”视图模式。

在这里插入图片描述

3. Docker 菜单 ( ) 显示 Docker 订阅服务协议窗口。它包括对 Docker Desktop 使用条款的更改。

4. 单击复选框表示您接受更新后的条款,然后单击接受继续。接受条款后,Docker Desktop 将启动。

5. 可以在终端中用docker -v来查看当前docker版本,也可以用docker ps来查看docker当前拥有的镜像有哪些在这里插入图片描述

三、部署Flask项目

1.首先,这是我的一个简单的Flask项目

​​​​​在这里插入图片描述
代码如下:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8090, debug=False)

这里注意 要指定host为0.0.0.0
如果不指定的话,默认的是127.0.0.1,只能本地访问,将host设置成0.0.0.0后解决了这个问题。

2.生成requirements.txt

pip install freeze -> requirements.txt
来生成所需的依赖包文件

3.编写dockerFile文件

dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。

docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。

FROM python:3.7.3
# FROM:指定基础镜像,必须为第一个命令
# FROM <image>:<tag>
# tag是可选的,如果不使用这个值时,会使用latest版本的基础镜像
# tag为版本号 

ADD . /flaskproject/
# ADD 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
# ADD source target
# ADD ["<src>",... "<dest>"] 用于支持包含空格的路径
# ADD hom* /mydir/          # 添加所有以"hom"开头的文件
# ADD hom?.txt /mydir/      # ? 替代一个单字符,例如:"home.txt"
# ADD test relativeDir/     # 添加 "test" 到 `WORKDIR`/relativeDir/
# ADD test /absoluteDir/    # 添加 "test" 到 /absoluteDir/

WORKDIR /flaskproject
# WORKDIR:工作目录,类似于cd命令
# 示例:
# WORKDIR /a  (这时工作目录为/a)
# WORKDIR b  (这时工作目录为/a/b)
# WORKDIR c  (这时工作目录为/a/b/c)
# 注:通过WORKDIR设置工作目录后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT、ADD、COPY等命令都会在该目录下执行。在使用docker run运行容器时,可以通过-w参数覆盖构建时所设置的工作目录。

RUN  pip install -i https://mirrors.aliyun.com/pypi/simple/ -r /flaskproject/requirement.txt
# RUN:构建镜像时执行的命令
# 有以下两种命令执行方式:
# shell执行
# 格式:RUN <command>
# exec执行
# 格式:RUN ["executable", "param1", "param2"]
# 示例:
# RUN ["executable", "param1", "param2"]
# RUN apk update
# RUN ["/etc/execfile", "arg1", "arg1"]
# 注:RUN指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时指定--no-cache参数,如:docker build --no-cache

WORKDIR service

CMD python3.7 app.py
# CMD:构建容器后调用,也就是在容器启动时才进行调用。
# 格式:
# CMD ["executable","param1","param2"] (执行可执行文件,优先)
# CMD ["param1","param2"] (设置了ENTRYPOINT,则直接调用ENTRYPOINT添加参数)
# CMD command param1 param2 (执行shell内部命令)
# 示例:
# CMD echo "This is a test." | wc -
# CMD ["/usr/bin/wc","--help"]
# 注:CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令。

完整代码:

FROM python:3.7.3

ADD . /flaskproject/

WORKDIR /flaskproject

RUN  pip install -i https://mirrors.aliyun.com/pypi/simple/ -r /flaskproject/requirement.txt

WORKDIR service

CMD python3.7 app.py

4.构建dockerImage镜像

在项目文件里执行
docker build -t flaskpro .
注意:这个.是必须的,它代表着在当前目录下找dockerfile,
docker build的语法是
docker build [OPTIONS] PATH | URL | -

-f :指定要使用的Dockerfile路径;
–rm :设置镜像成功后删除中间容器;
–tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

在这里插入图片描述
语句运行后,docker就会自动构建python环境了。
同时,DockerDesktop也出现了我们构建的镜像。
在这里插入图片描述

5. 运行docker镜像

docker run :创建一个新的容器并运行一个命令
语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--name="nginx-lb": 为容器指定一个名称;

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h "mars": 指定容器的hostname;

-e username="ritchie": 设置环境变量;

--env-file=[]: 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

--link=[]: 添加链接到另一个容器;

--expose=[]: 开放一个端口或一组端口;

--volume , -v: 绑定一个卷

我们这里就使用这个语句就好了

 docker run -p 8000:8090 -d flaskpro

这里的8000是主机的地址,8090是docker向外开放映射的地址
在这里插入图片描述

回到DockerDesktop客户端,发现images多了一个in use的图标,我们点进去就能看到正在运行的image实例了。
在这里插入图片描述
再点击这个实例,我们可以查看它的具体运行情况
在这里插入图片描述
这里面有三个选项卡,第一个就是终端的日志
在这里插入图片描述
第二个就是配置详情
在这里插入图片描述
第三个是系统资源状态
在这里插入图片描述
然后我们就可以在浏览器地址栏输入
localhost:8000来访问你的项目了
在这里插入图片描述
在这里插入图片描述
这几个按钮的话,第一个是在浏览器中打开,第二个是容器内的终端,第三个是停止容器,第四个是restart,第五个是删除
要想删除的话,得先停止运行image才行

其他命令:

停止运行中的容器flaskpro
docker stop flaskpro

重启容器flaskpro
docker restart flaskpro

附一个大佬的教程视频
https://www.bilibili.com/video/BV1Gt41157eQ?from=search&seid=16025884014759342622&spm_id_from=333.337.0.0

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值