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

▒ 目录 ▒

    • 导读
      • 开发环境
    • 1️⃣ Dockerfile介绍
      • 基本语法
      • 指令
    • 2️⃣ 实战:Python 的 Flask Web
      • 代码
      • 编译运行
      • 发布到服务器
    • 文章小结
    • 参考资料

导读

开发环境

版本号 描述
文章日期 2023-12-15
操作系统 Win10 - 22H2 22621.2715
WSL 2
Docker Desktop 4.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。

形象的表示:
【Docker】5. Dockerfile 构建和管理容器化应用程序_第1张图片

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 绑定端口
    界面操作:
    【Docker】5. Dockerfile 构建和管理容器化应用程序_第2张图片
  1. 如果再次启动,使用 start 命令
    docker start my-python-flask-web
  1. 本地打开页面http://127.0.0.1:5000/
    【Docker】5. Dockerfile 构建和管理容器化应用程序_第3张图片

发布到服务器

有点像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】5. Dockerfile 构建和管理容器化应用程序_第4张图片
稍等片刻,即可完成发布,在docker上可以查看到信息
【Docker】5. Dockerfile 构建和管理容器化应用程序_第5张图片

文章小结

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

参考资料

  • 文中代码地址: https://gitcode.net/kinghzking/MyOpen/-/tree/master/course/Docker/5-Dockerfile
  • 【WSL】Windows下的Linux子系统使用方法指南 https://blog.csdn.net/kinghzking/article/details/134984077
  • 【Docker】WSL 2 上的 Docker 搭建和入门 https://blog.csdn.net/kinghzking/article/details/134994407
  • 【Docker】常用命令 https://blog.csdn.net/kinghzking/article/details/135024182
  • 【Docker】实战:nginx、redis https://blog.csdn.net/kinghzking/article/details/135026869
  • 官网文档: https://docs.docker.com/reference/

你可能感兴趣的:(#,Docker,docker,容器,运维,Dockerfile)