Docker:Dockerfile设置自带jdk8基础镜像 + 给springboot项目选用第二个application.properties

    xiaoxiao2023-11-07  150

    空白 或  空白 或  空白 或  以上用于提示首行缩进,与内容无关。


    参考: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:

    最新回复(0)