记录下Dockerfile的编写常用属性
# LABEL 一个全局标注,键值对开头 可多行使用 例: a.b.c=测试标注,用来标注一些说明信息
# RUN 语句过长可使用"\" 来拆分 表示在构建镜像时执行命令行 用&&来连接使用多个命令行而不要多次RUN(这会导致多重镜像)
# RUN wget -O - https://some.site | wc -l > /number 命令1"|"命令2 表示命令1执行失败就执行命令2
# EXPOSE 通知Docker容器在运行时默认侦听指定的网络端口 可以-p来覆盖
# ENV 配置环境变量 在docker run --env <key>=<value>
# ADD <src> <dest> 或 ADD ["<src>,"<dest>"] 把src路径中的所有文件复制到dest中 可以做正则匹配 只复制src目录下的全部文件,如果src是个压缩文件就解压后再复制
# COPY 是ADD的简化版本 一般都是使用COPY ADD很少用 只是复制文件到目录 不会解压
# ENTRYPOINT 例:ENTRYPOINT ["executable", "param1", "param2"] 首选 可以充当声明变量名 ENV DIRPATH /path
# CMD CMD和ENTRYPOINT在Dockerfile中至少有一个 指定容器启动时在WORKDIR中执行的命令行 例:["dotnet","xxx.dll"]
# ARG ARG <name>[=<default value>] 指定参数 可以在build时 设置值 定义ARG CONT_IMG_VER Dockfile获取$CONT_IMG_VER
# USER 运行的图像和用于当任何指令设置的用户名
# Dockfile中等于用":"表示 例:${CONT_IMG_VER:-v1.0.0}
# ONBUILD 充当其他镜像的基础镜像时触发 例:ONBUILD ADD . /app/src
# VOLUME 指定容器运行时和本地映射的文件夹 例: VOLUME [ "/data:/data" ] 表示本地的data路径和容器中的data路径相映射,本地覆盖容器
# HEALTHCHECK
# --interval=DURATION(默认值:30s)(运行状况检查将首先在容器启动后的间隔秒运行,然后在每次上一次检查完成后再间隔秒。)
# --timeout=DURATION(默认值:30s)(如果单次运行的检查花费的时间超过超时秒数,那么检查将被视为失败)
# --start-period=DURATION(默认值:0s)(需要时间引导的容器提供初始化时间。在此期间探测失败将不计入最大重试次数)
# --retries=N(默认值:3)(重试)
.NetCore 部署例子
FROM microsoft/dotnet
LABEL description="一个.NetCore+Docker部署的例子"
ENV baseDir=/app/dotnet
WORKDIR ${baseDir}/NetCoreApp
EXPOSE 12354
COPY . .
CMD ["dotnet","NetCoreApp.dll"]
docker-compose的编写
version: '3'
services:
reactapp:
build:
context: .
image: "718114245/reactapp"
ports:
- "12358:12354"