当前位置: 首页 > news >正文

Dockerfile的详解与案例

《Dockerfile 详解与案例》

一、Dockerfile 简介

Dockerfile 是一个用来构建 Docker 镜像的文本文件,它包含了一系列指令,用于描述如何创建一个 Docker 镜像。通过 Dockerfile,你可以定义镜像的基础环境、安装软件包、设置环境变量等操作,从而实现快速、可重复地构建容器镜像。

二、Dockerfile 基本指令

1. FROM

指定基础镜像,后续的指令将基于这个镜像进行构建。例如:

FROM ubuntu:latest

2. RUN

用于在镜像中执行命令。可以是单个命令,也可以是多个命令的组合,用&&连接。例如:

RUN apt-get update && apt-get install -y python3

3. COPY

将本地文件或目录复制到镜像中。例如:

COPY app.py /app/

4. ADD

功能类似于 COPY,但 ADD 还可以自动解压缩 tar 文件等。例如:

ADD myfile.tar.gz /app/

5. WORKDIR

设置工作目录。例如:

WORKDIR /app

6. ENV

设置环境变量。例如:

ENV MY_VAR=value

7. EXPOSE

声明容器运行时监听的端口。例如:

EXPOSE 8080

8. CMD

指定容器启动时要执行的命令。例如:

CMD ["python3", "app.py"]

三、案例:构建一个简单的 Python Web 应用镜像

假设我们有一个简单的 Python Flask 应用,文件结构如下:

.
├── app.py
└── requirements.txt

其中app.py的内容如下:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello, Docker!'if __name__ == '__main__':app.run(host='0.0.0.0', port=8080)

requirements.txt内容如下:

flask

下面是构建这个应用的 Dockerfile:

FROM python:3.11-slim-busterWORKDIR /appCOPY requirements.txt.RUN pip install -r requirements.txtCOPY app.py.EXPOSE 8080CMD ["python3", "app.py"]

构建镜像的命令如下:

docker build -t my-python-app.

运行容器的命令如下:

docker run -p 8080:8080 my-python-app

现在,可以在浏览器中访问http://localhost:8080,可以看到“Hello, Docker!”的输出。

http://www.lryc.cn/news/445677.html

相关文章:

  • [spring]用MyBatis XML操作数据库 其他查询操作 数据库连接池 mysql企业开发规范
  • [产品管理-33]:实验室技术与商业化产品的距离,实验室技术在商业化过程中要越过多少道“坎”?
  • 【有啥问啥】 Self-Play技术:强化学习中的自我进化之道
  • LCR 008. 长度最小的子数组
  • uniApp 解决uniapp三方地图获取位置接口的请求次数限制问题,分别提供 Android 和 iOS 的实现方法(原生插件获取)
  • Zabbix Agent 监控 MySQL 进程状态
  • 【模型】感知器
  • HtmlCss 基础总结(基础好了才是最能打的)五
  • 图神经网络实战——分层自注意力网络
  • 基于深度学习的数字识别系统的设计与实现(python、yolov、PyQt5)
  • ChatGPT 提取文档内容,高效制作PPT、论文
  • 3、等保1.0 与 2.0 的区别
  • Angular面试题九
  • (转载)智能指针shared_ptr从C++11到C++20
  • Ubuntu 上安装 Miniconda
  • 【Vue系列五】—Vue学习历程的知识分享!
  • CaLM 因果推理评测体系:如何让大模型更贴近人类认知水平?
  • 深入探索卷积神经网络(CNN)
  • 【C++篇】手撕 C++ string 类:从零实现到深入剖析的模拟之路
  • 毕业设计选题:基于ssm+vue+uniapp的校园失物招领小程序
  • [系统设计总结] - Proximity Service算法介绍
  • 变压吸附制氧机的应用范围
  • MATLAB绘图基础8:双变量图形绘制
  • Appium高级话题:混合应用与原生应用测试策略
  • windows源码安装protobuf,opencv,ncnn
  • MicroPython 怎么搭建工程代码
  • Android studio安装问题及解决方案
  • 前端面试题(二)
  • 【C++】stack和queue的使用及模拟实现
  • MongoDB解说