docker技术总结(二)
cnblogs 2024-07-19 08:09:04 阅读 79
五、Dockerfile:用于定义 Docker 镜像内容的脚本文件。
Dockerfile基本结构
一个典型的 Dockerfile 由一系列指令组成,每个指令用于执行特定的任务,如指定基础镜像、复制文件、运行命令等。常用的 Dockerfile 指令包括:
FROM
LABEL
RUN
- 在镜像构建时执行命令,通常用于安装软件包。
- 示例:
RUN apt-get update && apt-get install -y python3
COPY
- 将本地文件或目录复制到镜像中。
- 示例:
COPY . /app
ADD
- 功能类似于 COPY,但可以处理 URL 和解压 tar 文件。
- 示例:
ADD https://example.com/file.tar.gz /app/
CMD
- 指定容器启动时要执行的命令,可以被
docker run
提供的命令替代。 - 示例:
CMD ["python3", "app.py"]
- 指定容器启动时要执行的命令,可以被
ENTRYPOINT
- 配置容器启动时的主进程,通常用于不可替代的命令。
- 示例:
ENTRYPOINT ["python3", "app.py"]
ENV
- 设置环境变量。
- 示例:
ENV APP_HOME /app
EXPOSE
- 声明容器监听的端口,但不会实际打开端口,需要使用
docker run -p
映射。 - 示例:
EXPOSE 8080
- 声明容器监听的端口,但不会实际打开端口,需要使用
VOLUME
- 定义匿名卷或指定卷,以便持久化数据。
- 示例:
VOLUME /data
WORKDIR
- 设置工作目录,后续命令会在这个目录下运行。
- 示例:
WORKDIR /app
USER
- 指定运行后续命令的用户。
- 示例:
USER appuser
ARG
- 定义构建参数,可以在
docker build
时传递。 - 示例:
ARG VERSION=1.0
- 定义构建参数,可以在
HEALTHCHECK
- 配置容器健康检查命令。
- 示例:
HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1
写一个简单的django项目的Dockerfile构建
首先我们要有一个基本的django项目目录结构:
根据目录结构,可以写出Dockerfile文件
FROM python:3.9
# 设置环境变量
ENV PYTHONUNBUFFERED=1
# 创建工作目录
WORKDIR /app
# 复制项目的依赖文件
COPY requirements.txt /app/
# 安装项目的依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制项目代码
COPY . /app/
# 暴露Django的默认端口
EXPOSE 8000
# 运行Django开发服务器
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。