Dockerfile 文件示例

参考:

  1. 知乎-isisiwish
  2. 博客园-波神
  3. Deepzz 有关于Volume的配置和docker-compose.yml的编写。

Dockerfile各参数说明

# ############ 主要用来构建镜像
FROM                # 指定镜像(必须有)
MAINTAINER      # 声明维护者(可有可无;位置无所谓,放在FROM后比较合理)
USER                 # 设置容器运行的UID(可有可无)
ENV                    # 指定环境变量(后续命令可以直接引用“$envname”)
RUN                    # 执行shell命令,用于创建容器(一般地,每条RUN对应一条命令;也可以利用 `;\`来执行多条命令)
# ############ 主要是用于构建镜像后的部署过程
COPY                 # 复制宿主机的文件到容器内
ADD                    # 添加宿主机的文件`或者URL`到容器内(和COPY基本相同,区别多了个下载网络文件)
VOLUME             # 将容器内的目录映射到宿主机内(方便在宿主机内查看文件,比如日志,项目源码等)
WORKDIR           # 工作目录,指明`CMD命令的运行目录`
ENTRYPOINT      # `只能有一个entrypoint存在,不可被docker run 命令的命令行参数覆盖`
EXPOSE              # 容器暴露的端口
CMD                    # 执行shell命令,`和RUN区别`:run用于部署,cmd用于部署后的运行,并且可以和entrypoint配合使用(一般不使用),可以`被命令行参数覆盖`

Dockerfile部分参数可被命令行参数覆盖

允许我们部署的时候动态输入参数,覆盖Dockefile的指定参数

具体示例建使用场景:2.

使用场景

1. 构建docker image提供给他人使用

常用命令: docker build -t image_name:iamge_tag -f path/Dockerfile --rm ./app

2. 其他人根据docker image部署项目

常用命令:docker run -d -e -v -u -w -p image_name
说明:-d:后台运行; -e:指定环境变量; -v: volume映射宿主机和容器内目录;-u:指定运行容器的UID;-w:指定workdir; -p:指定端口

解释

  1. dockerfile几乎总是放在项目根目录下;
  2. docker根据项目目录下的项目文件和提供dockerfile提供的项目配置构建一个独立的环境用来部署项目;
  3. 一般地,我们不需要保存docker image,因为Dockerfile更加易于保存和传递,而且更加轻量级,易于编辑,环境一致;
  4. 有时候为了更加快速的进行部署,节省构建的时间,可以保存docker镜像文件,运行容器的时候只需通过命令行调整运行参数即可。

docker-compose.yml

docker-compose是官方提供的用来管理docker image的工具,更加方便;
实际项目中一个项目总是依赖于多个服务,这里用一个docker-compose.yml

官方docker-compose.yml示例

posted @   dasky92  阅读(506)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示