java微服务dockerfile模板

454 阅读1分钟

模板

#格式: `FROM <image> 或者 FROM <image>:<tag>
#tag的默认值是latest,如果参数image或者tag指定的镜像不存在,则返回错误。
FROM registry.cn-beijing.aliyuncs.com/XX/jdk:v8git

#指令设置工作目录,它之后的RUN、CMD、ENTRYPOINT、COPY以及ADD指令都会在这个工作目录下运行。
#如果这个工作目录不存在,则会自动创建一个
WORKDIR /app

格式:`ADD <src> <dest>`复制本地文件到镜像的功能
ADD target/XX.jar /app/

#格式: `EXPOSE <port> [<port>/<protocol>...]`
#EXPOSE指令通知Docker该容器在运行时侦听指定的网络端口。
#可以指定端口是侦听TCP还是UDP,如果未指定协议,则默认值为TCP。
#这个指令仅仅是声明容器打算使用什么端口而已,并不会自动在宿主机进行端口映射,
#可以在运行的时候通过docker -p指定。
EXPOSE 8080

#CMD指令有3种格式。
#格式1:`CMD <command>` (shell格式)
#格式2:`CMD ["executable", "param1", "param2"]` (exec格式,推荐使用)
#格式3:`CMD ["param1", "param2"]` (为ENTRYPOINT指令提供参数)
#CMD指令在构建镜像时并不执行任何命令,而是在容器启动时默认将CMD指令作为第一条执行的命令。
#如果用户在命令行界面运行docker run命令时指定了命令参数,则会覆盖CMD指令中的命令。
#CMD指令提供容器运行时的默认值,这些默认值可以是一条指令,也可以是一些参数。
#一个Dockerfile中可以有多条CMD指令,但只有最后一条CMD指令有效。
#CMD ["param1", "param2"]格式是在CMD指令和ENTRYPOINT指令配合时使用的
CMD ["java","-Dspring.profiles.active=XX","-Xms512m","-Xmx512m","-jar","XX.jar"]

参考

juejin.cn/post/684490…