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

发布时间:2023年12月20日

🛫 导读

开发环境

版本号描述
文章日期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镜像逐渐成为企业交付的标准,非常需要学习。

📖 参考资料

文章来源:https://blog.csdn.net/kinghzking/article/details/135034972
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。