空白 或

空白 或

空白 或

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

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工程如下:

spring boot docker 只打某个模块 docker springboot 指定profile_dockerfile java8

其中,

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:更改镜像的源,不过在这里不使用。

spring boot docker 只打某个模块 docker springboot 指定profile_dockerfile java8_02

二、生成Docker image的命令:

建议直接在工程目录docker目录下执行:

spring boot docker 只打某个模块 docker springboot 指定profile_spring_03

 docker build:执行build image的命令

-t:制定生成的image的名称与标前(name:tag)

this_is_name:1.0:“this_is_name”:生成的image的name,“1.0”生成的image的tag。(别忘了最后有个“.”号)

结果如下:

spring boot docker 只打某个模块 docker springboot 指定profile_jar_04

三、运行Docker image的命令:

spring boot docker 只打某个模块 docker springboot 指定profile_Docker_05

如上:

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

2、停止container:docker stop

五、删除Docker的命令:

1、删除image:docker rmi

2、删除container:docker rm

六、Docker的安全检查:

为了指导container是否在健康(正常)运行,可在Dockerfile中添加“健康检查”的命令:如下图:

spring boot docker 只打某个模块 docker springboot 指定profile_dockerfile java8_06

如上图所示,可以在命令行中看到健康状态。

Dockerfile:

spring boot docker 只打某个模块 docker springboot 指定profile_spring_07