空白 或
空白 或
空白 或
以上用于提示首行缩进,与内容无关。
参考:https://beginor.github.io/2018/03/11/healthy-check-instruction-of-docker.html
以上为参考链接,与内容无关。
1 背景:
springboot工程中application.properties是用来配置工程的一些设置的,如数据库信息等,有时依据Dockerfile打包成image时须选另一个.properties文件,所以要在Dockerfile中添加一段 -D参数
2 过程:
修改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)
springboot工程如下:
其中,
application.properties文件:springboot initialzr中下载的模板里自带的;
application-stage.properties文件:自己仿照application.properties,更改一些变量的参数如mysql的url,账号,密码等。
3 结果:
可以在一个springboot项目中配置2个application.properties文件,打包Docker image时可以根据不同的application.properties文件来打包出不同的image。
4 附带:
一、工程_根目录下文件夹的内容:
下图为ubuntu系统中,工程目录下的docker文件夹中的准备文件,:
1、 Dockerfile:如前所言,生成Dockerfile镜像的文件;
2、 xxxx-SNAPSHOT.jar:image中所包含的.jar文件,要跑的springboot;
3、 sources.list:更改镜像的源,不过在这里不使用。
二、生成Docker image的命令:
建议直接在工程目录docker目录下执行:
docker build:执行build image的命令
-t:制定生成的image的名称与标前(name:tag)
this_is_name:1.0:“this_is_name”:生成的image的name,“1.0”生成的image的tag。(别忘了最后有个“.”号)
结果如下:
三、运行Docker image的命令:
如上:
1、 docker run:运行image的命令
2、 this_is_name:tag:镜像的全名(含tag)
3、-p:制定端口映射
4、9090:8080:9090:宿主机针对这个container(image运行以后生成)所开放的接口,8080:container内部开放给外部的接口。
四、运行Docker container的命令:
1、运行container:docker start <container全名>
2、停止container:docker stop <container全名>
五、删除Docker的命令:
1、删除image:docker rmi <image全名 或 image ID>
2、删除container:docker rm <container全名 或 container ID>
六、Docker的安全检查:
为了指导container是否在健康(正常)运行,可在Dockerfile中添加“健康检查”的命令:如下图:
如上图所示,可以在命令行中看到健康状态。
Dockerfile: