在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
相关推荐
递归尽头是星辰36 分钟前
SpringBoot深度解析:从核心原理到最佳实践
spring boot·事务传播机制·自动配置原理·springboot启动流程·starter设计
谷新龙00136 分钟前
docker compose部署kafka
docker·容器·kafka
.生产的驴1 小时前
SpringBoot 服务器监控 监控系统开销 获取服务器系统的信息用户信息 运行信息 保持稳定
服务器·spring boot·分布式·后端·spring·spring cloud·信息可视化
ascarl20101 小时前
准确--CentOS 7.9在线安装docker
linux·docker·centos
惜鸟2 小时前
springboot 项目的包结构设计(一)
java·spring boot
David爱编程3 小时前
Docker Daemon 调优全解,打造高性能守护进程配置!
后端·docker·容器
考虑考虑3 小时前
@MockitoBean注解使用
spring boot·后端·spring
张童瑶4 小时前
Docker 下备份 Mariadb 数据库文件
数据库·docker·mariadb
大猩猩爱分享4 小时前
Mac安装docker desktop
macos·docker
MC皮蛋侠客4 小时前
使用Gitlab CI/CD结合docker容器实现自动化部署
ci/cd·docker·gitlab