在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
相关推荐
ladymorgana32 分钟前
【spring boot】三种日志系统对比:ELK、Loki+Grafana、Docker API
spring boot·elk·grafana
程序员秘密基地2 小时前
基于html,css,vue,vscode,idea,,java,springboot,mysql数据库,在线旅游,景点管理系统
java·spring boot·mysql·spring·web3
OKUNP3 小时前
Docker高级管理--容器通信技术与数据持久化
docker·容器·php
xdscode4 小时前
SpringBoot ThreadLocal 全局动态变量设置
java·spring boot·threadlocal
天河归来6 小时前
springboot框架redis开启管道批量写入数据
java·spring boot·redis
合作小小程序员小小店6 小时前
web网页,在线%食谱推荐系统%分析系统demo,基于vscode,uniapp,vue,java,jdk,springboot,mysql数据库
vue.js·spring boot·vscode·spring·uni-app
用户6855449692736 小时前
第一周作业
docker
sniper_fandc6 小时前
SpringBoot系列—MyBatis(xml使用)
java·spring boot·mybatis
咖啡啡不加糖8 小时前
RabbitMQ 消息队列:从入门到Spring Boot实战
java·spring boot·rabbitmq
星辰云-10 小时前
【超详细】CentOS系统Docker安装与配置一键脚本(附镜像加速配置)
linux·docker·centos