Docker部署单节点的Spring Boot项目

Docker环境的安装

本文的操作均基于CentOS操作系统

  1. 卸载本地可能存在的旧版本docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  1. 安装本地docker仓库
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  1. 安装本地仓库配置
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装Docker Engine-Community
sudo yum install docker-ce docker-ce-cli containerd.io
  1. 启动docker
sudo systemctl start docker
  1. 测试是否安装成功
    docker安装好后有一个默认的hello-world项目镜像,可以尝试启动测试环境是否安装好了
sudo docker run hello-world

Spring Boot项目 Jar包生成

  1. 将pom.xml中的打包方式设置成为maven
 	<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  1. 进行打包,点击maven-package进行打包
    在这里插入图片描述
  2. 打包完成后在target目录下可以看到项目打成的jar包
    在这里插入图片描述

Dockerfile编写

  1. 编写Dockerfile之前需要了解一些常用的语法
  • FROM :指使用的Base Image是什么,如FROM java:8,表示使用安装了JDK8的镜像作为基础镜像
  • RUN:执行代码 每RUN一次就生成一层 。为了避免无用分层,建议合并多条指令执行,用&&连接
  • WORKDIR:docker容器中的当前工作目录,相当于在docker容器中执行cd操作
  • EXPOSE:声明暴露端口
  • ADD:添加本地文件到docker容器中并解压: ADD file dockerDir
  • COPY:添加本地文件到docker容器中: COPY file dockerDir
  • ENTRYPOINT:设置容器启动时运行命令
  1. 编写部署Java Jar包的Dockerfile
# 基础镜像使用java
FROM java:8
# 设置当前工作目录(容器中)
WORKDIR /usr/app/
# 将jar包添加到容器中
COPY basedemo-0.0.1-SNAPSHOT.jar . 
# 声明需要暴露的端口(与jar包中的一致)
EXPOSE 8080
# 运行jar包
ENTRYPOINT ["java", "-jar", "basedemo-0.0.1-SNAPSHOT.jar"]
  1. 在服务器上创建一个目录用于存放部署项目的jar包和Dockerfile
    /root/docker/demo/目录
    在目录下创建Dockerfile文件,编写上述的内容
    将Jar包上传到此目录
    在这里插入图片描述

Spring Boot项目部署

  1. 构建镜像
docker build -t demo .

-t 后面接创建的镜像的名字,这里取的是demo
一定要注意最后的.,表示运行当前目录的Dockerfile,一定不能少

构建成功后可以通过docker images查看本地的镜像
在这里插入图片描述
2. 启动容器

docker run -it -d -p 8081:8080 --name demopro  demo bash

启动一个容器,容器名为demopro,将容器的8080端口映射到宿主机8081端口

启动成功后通过docker ps -a 查看容器
在这里插入图片描述
3. 修改运行的Jar包后重新部署

代码修改后重新部署Jar包时不用重新构建镜像,因为是通过读取宿主机的Jar包进行启动的,只要保持Jar包名称一致,替换掉Jar包之后

执行docker restart 容器名就可以重启容器
在这里插入图片描述

可能会用到的Docker指令汇总

查看本地镜像

docker images

查看本地容器

docker ps -a

查看镜像/容器信息

docker inspect 镜像名

进入运行中的容器

docker exec -it 容器名 bash

停止一个容器

docker stop 容器名/容器编号前缀

启动docker服务

systemctl start docker

重启docker服务

systemctl restart  docker

关闭docker服务

systemctl stop docker

拉取一个镜像

docker pull 镜像名

删除镜像

docker rmi 镜像名

删除容器

docker rm 容器名/容器编号前缀

删除所有容器

docker rm $(docker container ls -aq)

删除所有停止的容器

docker rm $(docker container ls -f "status=exited" -q)

容器打包成镜像

docker commit  容器名称  新镜像名称

修改镜像名称

docker tag 旧名称  新名称
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章