使用Docker部署Spring Boot项目
1.编写Dockerfile
# Docker image for springboot file run # VERSION 0.0.1 # Author: eangulee # 基础镜像使用java FROM java:8 # 作者 MAINTAINER luoyihao <xx@qq.com> # VOLUME 指定了临时文件目录为/tmp。 # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp VOLUME /tmp # 将jar包添加到容器中并更名为app.jar ADD compositive-system.jar app.jar ENV TimeZone=Asia/Shanghai # 使用软连接,并且将时区配置覆盖/etc/timezone RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone # 运行jar包 RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod","-Djasypt.encryptor.password=pwd","/app.jar"]
下面的配置能使Docker日志的时间与当前时间设置成一致的。
ENV TimeZone=Asia/Shanghai # 使用软连接,并且将时区配置覆盖/etc/timezone RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
其中,ENTRYPOINT是java的执行命令。
-Djava.security.egd=file:/dev/./urandom是为了加快随机数的产生,减少应用启动时间。
如下面的配置:
ENTRYPOINT ["java","-jar","-Dspring.profiles.active=prod","-Djasypt.encryptor.password=pwd","/app.jar"]
对应的执行命令为:
java -jar --spring.profiles.active=prod --jasypt.encryptor.password=pwd /app.jar
2.在服务器/projects(自定义)目录下新增compositive-system(项目名)文件夹,在文件夹内上传Dockerfile文件和Spring Boot项目的jar包。
3.运行
docker build -t compositive-system .
制作镜像(Image)。
4.运行
docker run -d -p 8002:8001 compositive-system
其中,项目后台代码配置的端口号是8001,我们把8001转换成8002输出。
5.打开防火墙选项中的8002端口或打开所有端口。
6.访问部署的应用,例如http://xx.xx.xx.xx:8002/nav/getAllNav。