项目打包
编写Dockerfile
Dockerfile是一种描述文件,可以让我们更灵活的构建自己的镜像。
# Docker image for springboot file run
# VERSION 0.0.1
# Author: SZZ
# 基础镜像使用openjdk
FROM openjdk:11
# 作者
MAINTAINER SZZ
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD cnblogs-1.0-SNAPSHOT.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
VOLUME
用来在/var/lib/docker目录下创建/tmp目录并关联到容器内的/tmp目录,因为SpringBoot内嵌的Tomcat默认工作目录为/tmp(Linux下),此步骤可选。
更多关于Dockerfile的信息,可以查看Docker Dockerfile。
将jar包和Dockerfile文件上传到服务器
可以使用scp命令,使用scp命令在Windows和Linux之间拷贝文件
构建镜像
docker build -t cnblogs .
-t指定镜像名称,最后的.
指定上下文路径。
创建并启动容器
docker run --name cnblogs -p 8081:8081 -d cnblogs
-d表示后台运行,-p设置映射端口号。
浏览器访问
注意开放服务器防火墙对端口8081的访问。
配置HTTPS证书
生成证书
使用JDK自身的keytool工具生成证书,keytool工具在JDK安装路径的bin目录下
.\keytool.exe -genkeypair -alias tomcat_https -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/testjar/tomcat_https.keystore -storepass 123456
-alias:别名
-keypass:指定生成密钥的密码
-keyalg:指定密钥使用的加密算法
-keysize:密钥大小(位数)
-validity:过期时间(单位天)
-keystore:指定存储密钥的密钥库的生成路径和名称
-storepass:指定访问密钥库的密码
主要填写内容如下
您的名字与姓氏是什么?
[Unknown]: S
您的组织单位名称是什么?
[Unknown]: SZZ
您的组织名称是什么?
[Unknown]: SZZ
您所在的城市或区域名称是什么?
[Unknown]: SH
您所在的省/市/自治区名称是什么?
[Unknown]: SH
该单位的双字母国家/地区代码是什么?
[Unknown]: CN
CN=S, OU=SZZ, O=SZZ, L=SH, ST=SH, C=CN是否正确?
[否]: Y
最终生成tomcat_https.keystore文件
SpringBoot项目配置HTTPS
server:
port: 8081
servlet:
context-path: /cnblogs
ssl:
enabled: true
key-store: classpath:tomcat_https.keystore
key-store-type: JKS
key-store-password: 123456
将tomcat_https.keystore文件放到项目的resources目录下。
再次部署
项目重新打包,将jar包上传到服务器,拷贝到Docker容器内部的根目录下
docker cp app.jar f704e0bb6a7a:/
容器重启
docker restart f704e0bb6a7a
可以看到HTTPS证书已经生效,
参考
Docker - 部署Java SpringBoot应用程序
Docker Dockerfile
一文说清楚Dockerfile 中VOLUME到底有什么用?
SpringBoot系列——启用https