空白 或 空白 或 空白 或 以上用于提示首行缩进,与内容无关。
参考:https://beginor.github.io/2018/03/11/healthy-check-instruction-of-docker.html 以上为参考链接,与内容无关。
springboot工程中application.properties是用来配置工程的一些设置的,如数据库信息等,有时依据Dockerfile打包成image时须选另一个.properties文件,所以要在Dockerfile中添加一段 -D参数
修改Dockerfile,详见代码
FROM fabric8/java-alpine-openjdk8-jdk WORKDIR /usr/app/ VOLUME /tmp COPY springboot_bootjar_gettedfile-0.0.1-SNAPSHOT.jar /usr/app ENTRYPOINT java -jar -Dspring.profiles.active=stage springboot_bootjar_gettedfile-0.0.1-SNAPSHOT.jar EXPOSE 8080其中, FROM fabric8/java-alpine-openjdk8-jdk:是设置的带jdk8的基础镜像,可以在Docker hub上寻找类似的基础image; WORKDIR:是container里的工作路径; VOLUME:是container自带的卷,在本image中基本无作用; COPY springboot_bootjar_gettedfile-0.0.1-SNAPSHOT.jar /usr/app: 是把springboot生成的.jar包复制到container里的/usr/app路径下,以便启动container时可以跑这个.jar文件; ENTRYPOINT java -jar -Dspring.profiles.active=stage serviceregistry-0.0.1-SNAPSHOT.jar: “ENTRYPOINT”:指明container一旦启动首先运行什么; “java -jar”:用jdk运行.jar包; “springboot_bootjar_gettedfile-0.0.1-SNAPSHOT.jar”:要运行的.jar包; “-Dspring.profiles.active=stage”:指定运行另一个.properties文件。 EXPOSE 8080:指定container开放的端口,宿主机因该端口进入container内部,的一成功访问。(一般情况下,Docker默认已开启了8080)
其中, application.properties文件:springboot initialzr中下载的模板里自带的; application-stage.properties文件:自己仿照application.properties,更改一些变量的参数如mysql的url,账号,密码等。
可以在一个springboot项目中配置2个application.properties文件,打包Docker image时可以根据不同的application.properties文件来打包出不同的image。
下图为ubuntu系统中,工程目录下的docker文件夹中的准备文件,: 1、 Dockerfile:如前所言,生成Dockerfile镜像的文件; 2、 xxxx-SNAPSHOT.jar:image中所包含的.jar文件,要跑的springboot; 3、 sources.list:更改镜像的源,不过在这里不使用。
建议直接在工程目录docker目录下执行: docker build:执行build image的命令 -t:制定生成的image的名称与标前(name:tag) this_is_name:1.0:“this_is_name”:生成的image的name,“1.0”生成的image的tag。(别忘了最后有个“.”号)
结果如下:
如上: 1、 docker run:运行image的命令 2、 this_is_name:tag:镜像的全名(含tag) 3、-p:制定端口映射 4、9090:8080:9090:宿主机针对这个container(image运行以后生成)所开放的接口,8080:container内部开放给外部的接口。
1、运行container:docker start <container全名> 2、停止container:docker stop <container全名>
1、删除image:docker rmi <image全名 或 image ID> 2、删除container:docker rm <container全名 或 container ID>
为了指导container是否在健康(正常)运行,可在Dockerfile中添加“健康检查”的命令:如下图:
如上图所示,可以在命令行中看到健康状态。 Dockerfile: