一、Dockerfile
在开始制作镜像之前需要先了解一下Dockerfile文件。Dockerfile
是一个对镜像进行描述的文本文件,其内容包含四个部分: 基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。
简单的说就是告诉Docker,在制作镜像过程中需要怎么做,比如需要java环境,需要制作的应用在哪,应用的启动命令是怎样的等等信息。
一些Dockerfile的部分指令:
基础镜像信息: FROM
维护者信息:MAINTAINER
镜像操作指令: RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等
容器启动时执行指令:CMD、ENTRYPOINT
具体内容详见官方文档:Dockerfile reference | Docker Docs
二、为Java项目编写Dockerfile文件
准备好要制作成镜像的应用,这里以本人在项目开发过程中的一个Eureka服务为例,应用包名为:eureka_server.jar。创建一个Dockerfile(touch Dockerfile)文件与eureka_server.jar放在同一个文件夹下,如下所示:
编辑Dockerfile(vim Dockerfile)
FROM java:alpine
ADD eureka_server.jar eureka_server.jar
EXPOSE 9990
ENTRYPOINT ["java","-jar","/eureka_server.jar","--spring.profiles.active=prod"]
以上大概描述了这样一件事:以java:alpine为镜像基础,将eureka_server.jar文件复制到容器中的eureka_server.jar文件,并在容器内部使用端口9990
运行程序,并在容器启动时以
java -jar /eureka_server.jar --spring.profiles.active=prod
的命令启动应用。这简短的语法,可以很好的描述该镜像。
三、通过build命令制作镜像
语法: docker build [OPTIONS] PATH | URL | -
eureka应用制作成镜像:
docker build -t eureka .
-t
给镜像命名为eureka,代表将当前目录下所有文件构建到镜像中。我们通过images查看下制作好的镜像,并运行看看。
docker run -p 9990:9990 --name eureka eureka
上面启动命令没有-d
命令意味着你会在控制台中看到eureka服务的启动过程,和我们在Idea中打印的启动日志一致。等待启动完成即可。访问http://xxxx:9990看看效果。看到eureka的页面,意味着大功告成