【Docker】5. Dockerfile 构建和管理容器化应用程序

🛫 导读

开发环境

版本号描述
文章日期2023-12-15
操作系统Win10 - 22H222621.2715
WSL2
Docker Desktop4.26.0

1️⃣ Dockerfile介绍

Dockerfile 是 Docker 的核心组成部分之一,它是一个文本文件,用于定义构建 Docker 镜像。

使用流程:
1、编写一个dockerfile文件
2、docker build 构建成为一个镜像
3、docker run运行镜像
4、docker pull 发布镜像

基本语法

语法说明:
1、每个保留关键字(指令)都是必须是大写字母
2、执行从上到下顺序执行
3、#表示注释
4、每个指令都会创建提交一个新的镜像层,并提交

指令

Dockerfile 的基本结构由一系列的指令组成,每个指令都以大写字母开头,并且可以有参数。下面是一些常用的 Dockerfile 指令:

  • FROM:指定基础镜像,例如 FROM ubuntu:latest 表示以最新的 Ubuntu 镜像作为基础。
  • RUN:在容器中执行命令,例如 RUN apt-get update && apt-get install -y python3 表示在容器中更新软件源并安装 Python 3。
  • COPY:将文件从主机复制到容器中,例如 COPY app.py /app/ 表示将主机上的 app.py 文件复制到容器中的 /app/ 目录。
  • WORKDIR:设置工作目录,例如 WORKDIR /app 表示将容器的工作目录设置为 /app。
  • EXPOSE:声明容器要暴露的端口,例如 EXPOSE 8000 表示容器将会监听端口 8000。
  • CMD:定义容器启动时要执行的命令,例如 CMD ["python3", "app.py"] 表示在容器启动时执行 python3 app.py

形象的表示:
在这里插入图片描述

2️⃣ 实战:Python 的 Flask Web

代码

文中代码地址: https://gitcode.net/kinghzking/MyOpen/-/tree/master/course/Docker/5-Dockerfile

Dockerfile代码如下:

# 使用官方 Python 3 镜像作为基础镜像
FROM python:3

# 设置工作目录
WORKDIR /app

# 将当前目录下的 requirements.txt 复制到容器中
COPY requirements.txt .

# 安装应用程序依赖项
RUN pip install --no-cache-dir -r requirements.txt

# 将当前目录下的所有文件复制到容器中的 /app 目录
COPY ./src .

# 暴露容器的端口
EXPOSE 5000

# 定义环境变量
ENV FLASK_APP=app.py

# 运行应用程序
CMD ["flask", "run", "--host=0.0.0.0"]


requirements.txt代码如下:

flask

app.py代码如下:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()


编译运行

  1. build
    docker buildx build . -t my-python-flask-web:1.0
    注意build之后的 .,否则会报错:ERROR: "docker buildx build" requires exactly 1 argument.
  1. run
    docker run --name my-python-flask-web -p 5000:5000 my-python-flask-web:1.0
  • –name 指定 容器名字
  • -p 绑定端口
    界面操作:
    在这里插入图片描述
  1. 如果再次启动,使用 start 命令
    docker start my-python-flask-web
  1. 本地打开页面http://127.0.0.1:5000/
    在这里插入图片描述

发布到服务器

有点像git,先提交,在push
docker tag my-python-flask-web:1.0 kinghz/my-python-flask-web:1.0
docker push kinghz/my-python-flask-web:1.0
在这里插入图片描述
稍等片刻,即可完成发布,在docker上可以查看到信息
在这里插入图片描述

🛬 文章小结

dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件。
Docker镜像逐渐成为企业交付的标准,非常需要学习。

📖 参考资料

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜猫逐梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值