Dockerfile内容为如下,先简单说明下:
FROM openjdk:8 #拉取ngxin的openjdk:8镜像
VOLUME /tmp # 挂载点
EXPOSE 8761 # 暴露端口,指定容器在运行时 监听的端口和协议,如 8761/tcp 或 8761/udp。 不指定默认是tcp
ADD ./target/spring.boot.webflux.ms.eureka-0.0.1-SNAPSHOT.jar ms.eureka.jar # add相当于copy from to
ENTRYPOINT ["java","-jar","/ms.eureka.jar"] # 容器启动后执行的命令
Dockerfile
FROM
启动Dockerfile 要求Dockerfile必须以FROM命令开头。图像是分层创建的,这意味着您可以将其他图像用作自己的基础图像。该FROM命令定义您的基础层。作为参数,它采用图像的名称。(可选)您可以添加维护者的Docker Cloud用户名和映像版本,格式为username/imagename:version。
RUN
用于构建您要创建的图像。对于每个RUN命令,Docker将运行该命令,然后创建映像的新层。这样,您可以轻松地将图像回滚到以前的状态。RUN指令的语法是将shell命令的全文放在RUN(例如RUN mkdir /user/local/foo)之后。这将自动在/bin/sh外壳中运行。您可以这样定义一个不同的shell:RUN /bin/bash -c ‘mkdir /user/local/foo’
COPY
将本地文件复制到容器中。
CMD
定义在启动时将在Image上运行的命令。与相比RUN,这不会为Image创建新的图层,而只是运行命令。CMD每个Dockerfile /映像只能有一个。如果需要运行多个命令,最好的方法是CMD运行脚本。CMD要求您告诉它在哪里运行命令,这与不同RUN。因此,示例CMD命令为:
CMD ["python", "./app.py"]
CMD ["/bin/bash", "echo", "Hello World"]
EXPOSE
为图像用户创建一个提示,指出哪些端口提供服务。它包含在可以通过检索的信息中$ docker inspect 。
注意:该EXPOSE命令实际上并没有使主机可以访问任何端口!相反,-p在使用时,这需要通过标志发布端口$ docker run。
PUSH
将您的映像推送到Docker Cloud或替代地推送到私有注册表
MAINTAINER
设置维护人员名字,其实相当于个备注:
MAINTAINER chushiyun # 用法为 MAINTAINER <name>
官网指定的github文档地址:
https://github.com/docker/labs/blob/master/beginner/chapters/webapps.md#235-dockerfile-commands-summary
Dockerfile官网文档:
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
Dockerfile官网练习文档(用例子说明用法):
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/