本文讲解了通过Docker部署简单的SpringBoot Web应用及Docker的安装及环境配置。
centOS7+Docker20.10.12+JDK17+SpringBoot2.6.4
安装Docker仓库
sudo yum install -y yum-utils
这里使用阿里云的镜像
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker Engine
sudo yum install docker-ce docker-ce-cli containerd.io
启动Docker
sudo systemctl start docker
运行Docker的Hellow,world镜像
sudo docker run hello-world
如成功运行,则安装成功
首先创建一个简单的SpringBoot项目,编写一个简易的Controller以便测试,如下:
@RestController
public class TestController{
@RequestMapping("/test")
public String test(){
return "dockertest";
}
}
FROM openjdk:17-jdk-alpine #基于jdk17的镜像环境进行制作
COPY *.jar /app.jar #把jar包拷贝到容器
CMD echo "======dockertest======"
EXPOSE 8080 #暴露容器的8080端口
ENTRYPOINT ["java","-jar","/app.jar"] #执行java -jar /app.jar运行网站
点击package,打包SpringBoot项目
将打包好的jar包和Dockerfile上传到liunx服务器
编译我们的镜像文件
注:-t 镜像的名字
-f Dockerfile路径
. 命令执行的上下文,告诉Docker在当前路径找Dockerfile
docker build -t docker_test .
输出以下结果,从中可以看到docker按照我们编写的Dockerfile一步一步进行编译
Sending build context to Docker daemon 17.56MB
Step 1/5 : FROM openjdk:17-jdk-alpine
17-jdk-alpine: Pulling from library/openjdk
17-jdk-alpine: Pulling from library/openjdk
5843afab384: Pull complete
53c946612e4: Pull complete
d8d71578380: Pull complete
Digest: sha256:4b6abae565492dbe9e7a894137c966a7485154238902f2f2bd9784383d81
Status: Downloaded newer image for openjdk:17-jdk-alpine
---> 264c9bdce61
Step 2/5 : COPY *.jar /app.jar
---> e9f7e89ae3d
Step 3/5 : CMD echo "======docker test======"
---> Running in 1b0261e9584
Removing intermediate container 1bf0261e9584
---> f0f1dbb95cb
Step 4/5 : EXPOSE 8080
---> Running in da9e90494a7
Removing intermediate container da9e91094a7
---> 37a94fded23
Step 5/5 : ENTRYPOINT ["java","-jar","/app.jar"]
---> Running in 1346eee2438
Removing intermediate container 1346eee2438
---> ccecc9c725ee
Successfully built ccecc9c725ee
Successfully tagged docker_test:latest
通过docker images查看镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
docker_test latest ccecc9c725ee 11 minutes ago 343MB
运行我们编译好的SpringBoot镜像
注: -d 以后台守护进程的方式运行
-P 随机生成端口号
--name 容器名字
docker run -d -P --name docker_test_web docker_test
通过docker ps查看已运行的进程
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aac5fbc16388 docker_test "java -jar /app.jar …" About a minute ago Up About a minute 0.0.0.0:49156->8080/tcp, :::49156->8080/tcp docker_test_web
可以看到我们的容器被Docker自动分配了一个端口号:49156
我们访问一下我们的请求
curl 127.0.0.1:49156/test
docker test
成功访问