在Docker上部署Springboot项目

在Docker上部署Springboot项目

###1.安装docker

2.安装mysql

  1. 拉 Mysql 镜像
java 复制代码
docker pull mysql:5.7.31
  1. 运行 Mysql 5.7.31
    第一次运行需要设置密码
java 复制代码
docker run -d --name myMysql -p 9506:3306 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7.31

不是第一次

java 复制代码
docker run -d --name myMysql -p 9506:3306 -v /data/mysql:/var/lib/mysql mysql:5.7.31

启动成功会返回一个id

参数分析

java 复制代码
-d: 后台运行容器,并返回容器 ID
--name myMysql: 为容器指定一个名称
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-v: 绑定一个卷,容器的 /var/lib/mysql 映射到 主机的目录 /data/mysql
-e MYSQL_ROOT_PASSWORD=123456: 设置环境变量,密码设置为 123456
mysql:5.7.31:使用镜像 mysql:5.7.31

扩展:mysql -u root -p 进入MySQL

3.把打包好的jar包上次到 /opt/service/testdocker目录下

把打包好的jar包上次到 /opt/service/testdocker目录下,上传之后,在 /opt/service/testdocker 新建一个文件名为Dockerfile的文件,文件内容如下:

java 复制代码
FROM  openjdk:8
VOLUME /opt/service/testdocker
ADD testdocker.jar testdocker.jar
EXPOSE 9999
ENTRYPOINT ["java","-jar","/testdocker.jar"]
java 复制代码
from openjdk:8 拉取一个 jdk 为 1.8 的依赖环境
testdocker.jar 就是你上传的 jar 包,替换为 jar 包的名称
testdocker.jar 是你将该 jar 包重新命名为什么名称,在容器中运行
expose 该容器暴露的端口是多少,就是 jar 在容器中以多少端口运行
entrypoint 容器启动之后执行的命令,java -jar /testdocker.jar 即启动 jar

4.打包镜像

在 /opt/service/testdocker 执行以下打包命令

java 复制代码
docker build -t fishexam .

5.运行容器

1. 第一次启动

java 复制代码
docker run -d -p 9999:9090--name testdocker-9999 testdocker

然后访问ip:+端口
2. 启动过了

java 复制代码
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED      STATUS                        PORTS                                                  NAMES
38e8a434088b   testdocker     "java -jar /testdock..."   6 days ago   Exited (255) 21 minutes ago   9999/tcp, 0.0.0.0:9999->9090/tcp, :::9999->9090/tcp    testdocker-9999
56c468b14848   mysql:5.7.31   "docker-entrypoint.s..."   6 days ago   Exited (255) 21 minutes ago   33060/tcp, 0.0.0.0:9506->3306/tcp, :::9506->3306/tcp   myMysql

启动命令

java 复制代码
docker run -d -p 9999:9090 --name testdocker-9998 testdocker

启动成功会返回一个id

docker 常用命令

java 复制代码
docker run: 启动一个容器
docker ps: 查看正在运行的容器
docker images: 查看本地镜像列表
docker pull: 拉取一个镜像到本地
docker build: 根据 Dockerfile 构建一个镜像
docker stop: 停止一个运行中的容器
docker rm: 删除一个容器
docker rmi: 删除一个本地镜像
docker exec -it <容器名称或者ID> ls : 在运行中的容器内执行命令
docker restart: 重启一个容器
docker logs: 查看容器的日志
docker inspect: 查看容器的详细信息
docker network: 管理容器网络
docker volume: 管理容器数据卷
docker-compose up: 使用 Docker Compose 启动多个容器
docker-compose down: 停止并移除使用 Docker Compose 启动的容器
docker save: 将一个镜像保存为 tar 文件
docker load: 从 tar 文件中加载一个镜像
docker tag: 给镜像打标签
docker push: 推送一个本地镜像到远程仓库

设置开机自启

java 复制代码
[root@localhost ~]# sudo docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                                                  NAMES
3bf17dd66cfc   mysql:5.7.31   "docker-entrypoint.s..."   3 minutes ago    Up 3 minutes    33060/tcp, 0.0.0.0:9506->3306/tcp, :::9506->3306/tcp   myMysql
748874f45662   testdocker     "java -jar /testdock..."   10 minutes ago   Up 10 minutes   9999/tcp, 0.0.0.0:9999->9090/tcp, :::9999->9090/tcp    testdocker-9999
[root@localhost ~]# docker update --restart=always myMysql
myMysql
[root@localhost ~]# docker update --restart=always testdocker-9999
testdocker-9999
相关推荐
普通网友23 分钟前
springboot之集成Elasticsearch
spring boot·后端·elasticsearch
invicinble1 小时前
关于flowable流程引擎技术栈相关
spring boot
l1t1 小时前
DeepSeek总结的使用 Docker 对 PostgreSQL 进行 Beta 测试
docker·postgresql·容器
倒流时光三十年6 小时前
第十八章 搜索历史保存功能实现记录
spring boot·微信小程序
暮云星影6 小时前
个人总结 docker 常用命令
docker·容器
倒流时光三十年7 小时前
第十七章 投票页面增加搜索功能
spring boot·微信小程序
郑洁文7 小时前
基于Springboot的足球青训俱乐部管理系统的设计与实现
java·spring boot·后端·足球青训俱乐部管理系统
极客先躯7 小时前
高级java每日一道面试题-2026年01月19日-实战篇[Docker]-如何配置镜像仓库的垃圾回收 (GC)?
java·运维·docker·容器
我登哥MVP8 小时前
Spring Boot 从“会用”到“精通”:自定义参数绑定原理
java·spring boot·后端·spring·servlet·maven·intellij-idea
日取其半万世不竭8 小时前
low-memory-server-swap-20260601
docker·容器·https