版本号 | 描述 | |
---|---|---|
文章日期 | 2023-12-15 | |
操作系统 | Win10 - 22H2 | 22621.2715 |
WSL | 2 | |
Docker Desktop | 4.26.0 | |
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。
文中代码地址: 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()
- build
docker buildx build . -t my-python-flask-web:1.0
注意build之后的.
,否则会报错:ERROR: "docker buildx build" requires exactly 1 argument.
- run
docker run --name my-python-flask-web -p 5000:5000 my-python-flask-web:1.0
- 如果再次启动,使用 start 命令
docker start my-python-flask-web
有点像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://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/