前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dockerfile简述

Dockerfile简述

原创
作者头像
木易三水良
修改2022-03-15 15:38:00
3020
修改2022-03-15 15:38:00
举报
文章被收录于专栏:木易三水良
代码语言:javascript
复制
# base镜像,一个文件中可以包含多个FROM
FROM openjdk:8-jdk-alpine 

MAINTAINER muyisanshuiliang@qq.com

LABEL version = "1.0.0"
LABEL description = "Java运行环境"

# 相当于cd,但是比cd强大,没有目录的情况会先创建再cd
WORKDIR /app

# 将1.txt拷贝到根目录下。它不仅仅能拷贝单个文件,还支持Go语言风格的通配符,比如如下:
COPY 1.txt /
# 拷贝所有 abc 开头的文件到testdir目录下
COPY abc* /testdir/
# ?是单个字符的占位符,比如匹配文件 abc1.log
COPY abc?.log /testdir/

ADD ./fridge-ai.jar /app 

# ADD与COPY的对比
# 1)没有目录ADD会创建目录
# 2)ADD附带解压功能以及添加远程文件
# 3)如果只是COPY的话,则不用ADD,因为ADD会增加镜像SIZE


# 设置环境常量,方便下文引用,比如:
ENV JAVA_HOME /usr/local/jdk1.8
# 引用上面的常量,
# RUN ${JAVA_HOME}/bin/java -jar xxx.jar


# 暴露的端口
EXPOSE 50051

# path:代表容器中的目录,
# 与docker run 不同,Dockerfile中不能指定宿主机目录,默认使用docker管理的挂载点
VOLUME ["./log","/app/log"]

# RUN 构建镜像时运行,在构建时能修改镜像内部的文件。
# 每条指令将在当前镜像基础上执行,并提交为新的镜像
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
# shell格式,会创建子进程执行
RUN yum -y install vim
# exec格式,当前进程执行
RUN ["yum","-y","install","vim"]

# CMD 容器启动时执行,而不是构建镜像时执行,多个CMD只有最后一个生效,
# 如果容器启动的时候有其他额外的附加指令,则CMD指令不生效
CMD ["echo", "container starting..."]

# ENTRYPOINT 容器创建时执行,而不是镜像构建时执行。
# 只有最后一个ENTRYPOINT会被执行
ENTRYPOINT ["java","-jar","fridge-ai.jar"]

# RUN vs CMD vs ENTRYPOINT
# 1、RUN 执行命令并创建新的镜像层,RUN 经常用于安装软件包。
# 2、CMD 设置容器启动后默认执行的命令及其参数,但 CMD 能够被docker run的命令行参数替换。
# 3、ENTRYPOINT 配置容器启动时运行的命令。ENTRYPOINT无论容器启动是否带参数,都会执行


# Dockerfile构建镜像
# docker build  -t ImageName:TagName dir

# -t − 给镜像加一个Tag
# ImageName − 给镜像起的名称
# TagName − 给镜像的Tag名
# Dir − Dockerfile所在目录,如果Dockerfile就在当前目录,则不需要改参数。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档