Dockerfile 文件示例
参考:
- 知乎-isisiwish
- 博客园-波神
- 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:指定端口
解释
- dockerfile几乎总是放在项目根目录下;
- docker根据项目目录下的项目文件和提供dockerfile提供的项目配置构建一个独立的环境用来部署项目;
- 一般地,我们不需要保存
docker image
,因为Dockerfile
更加易于保存和传递,而且更加轻量级,易于编辑,环境一致; - 有时候为了更加快速的进行部署,
节省构建的时间
,可以保存docker镜像文件,运行容器的时候只需通过命令行调整运行参数即可。
docker-compose.yml
docker-compose是官方提供的用来管理docker image的工具,更加方便;
实际项目中一个项目总是依赖于多个服务,这里用一个docker-compose.yml
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律