Docker部署Springboot项目——多环境

根据不同的环境(dev,prod),配置不同profile启动

Docker部署Springboot项目——多环境_第1张图片

application.properties中只需配置spring.profiles.active=dev,当jar启动时没配置spring.profiles.active参数时的默认启动application-testing.properties配置文件

在创建docker镜像中配置ENTRYPOINT

1.DockerFile----dev

FROM openjdk:8-jdk-alpine
VOLUME /tmp
#项目的 jar 文件作为 “app.jar” 添加到容器中;
ADD   demo.jar  app.jar
# Image创建容器时的初始化内存,最大内存,及启动时使用的profile. -c为清除以前启动的数据
ENTRYPOINT ["java","-Xms1024m","-Xmx1024m","-jar","/app.jar","--spring.profiles.active=dev","-c"]

 

2.DockerFile---pro

FROM openjdk:8-jdk-alpine
VOLUME /tmp
#项目的 jar 文件作为 “app.jar” 添加到容器中;
ADD   demo.jar  app.jar
# Image创建容器时的初始化内存,最大内存,及启动时使用的profile. -c为清除以前启动的数据
ENTRYPOINT ["java","-Xms1024m","-Xmx1024m","-jar","/app.jar","--spring.profiles.active=pro","-c"]


存放Dockerfile及需要部署的jar包

使用docker build 构建镜像

//docker build
// . 表示当前目录 -f 参数指定Dockerfile文件  -t 表示 制作的镜像
docker build -f Dockerfile  -t  demodev:v1 .
//docker build
// . 表示当前目录 -f 参数指定Dockerfile文件  -t 表示 制作的镜像  
docker build -f Dockerfile64  -t  demopro:v1 .

查看构建好的镜像

使用docker run 运行打包好的镜像,查看是否能按需求运行

//-d 表示后台运行容器 如果使用-d 
docker run  -d demodev:v1

备注:在前台模式下(不指定-d参数即可),Docker会在容器中启动进程,同时将当前的命令行窗口附着到容器的标准输入、标准输出和标准错误中。也就是说容器中所有的输出都可以在当前窗口中看到。甚至它都可以虚拟出一个TTY窗口,来执行信号中断(不加 -d参数 可能会导致当前shell 窗口始终为容器中进程运行的输出内容,甚至(ctrl+c)都无法中断) 


-d,那么容器将会运行在后台模式。此时所有I/O数据只能通过网络资源或者共享卷组来进行交互。因为容器不再监听你执行docker run的这个终端命令行窗口,只是会输出本次容器启动的containerID。可以使用docker logs containerID 来打印容器应用相关日志’ 

注:启动容器报错iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9095 -j DNAT --to-destination 0.0.0.0/9095 ! -i docker0: iptables: No chain/target/match by that name.

重启docker:systmctl restart docker

你可能感兴趣的:(docker)