Docker Dockerfile 学习笔记
什么是 Dockerfile?
Dockerfile 是用于构建 Docker 镜像的文本文件,其中包含了一系列指令和配置信息,从而可以在 Docker 中自动化构建容器镜像。通常情况下,我们会把这些 Dockerfile 文件存放在项目代码库中,并利用它们来构建、管理和发布 Docker 镜像。
Dockerfile 常用指令
FROM
指定 Docker 镜像的基础镜像,也就是从哪个镜像作为起点来构建我们的镜像。例如:
Copy CodeFROM ubuntu:18.04
RUN
运行命令,可以在构建过程中执行任何可执行文件或 Shell 命令。例如:
Copy CodeRUN apt-get update && apt-get install -y nginx
COPY
将本地文件或目录复制到构建镜像中的指定路径。例如:
Copy CodeCOPY app.py /app/
WORKDIR
设置工作目录,后续的命令都在这个目录下执行。例如:
Copy CodeWORKDIR /app
EXPOSE
声明容器运行时所监听的端口。例如:
Copy CodeEXPOSE 80
CMD
定义容器启动后默认执行的命令。例如:
Copy CodeCMD ["nginx", "-g", "daemon off;"]
实例:构建一个 Python Flask 应用
这里我们以 Python Flask 应用为例,演示如何使用 Dockerfile 构建一个 Docker 镜像。
首先,我们先创建一个 Python Flask 应用,包括以下两个文件:
Copy Code# app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')
Copy Code# requirements.txt
flask==1.1.2
接着,我们创建一个 Dockerfile 文件,用于构建 Docker 镜像。内容如下:
Copy CodeFROM python:3.8-slim-buster
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "app.py"]
最后,我们可以使用以下命令来构建 Docker 镜像:
Copy Codedocker build -t my-flask-app .
其中 my-flask-app
是我们为镜像取的名字。构建成功之后,可以运行下面的命令启动容器:
Copy Codedocker run -it --rm -p 5000:5000 my-flask-app
现在,可以访问 http://localhost:5000/ 来访问我们构建的 Python Flask 应用了。