在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
相关推荐
codelife3216 分钟前
在Docker容器中执行命令
容器
petaexpress14 分钟前
常用的k8s容器网络模式有哪些?
网络·容器·kubernetes
bjzhang7532 分钟前
SpringBoot开发——集成Tess4j实现OCR图像文字识别
spring boot·ocr·tess4j
flying jiang37 分钟前
Spring Boot 入门面试五道题
spring boot
小菜yh38 分钟前
关于Redis
java·数据库·spring boot·redis·spring·缓存
爱上语文2 小时前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
荆州克莱2 小时前
springcloud整合nacos、sentinal、springcloud-gateway,springboot security、oauth2总结
spring boot·spring·spring cloud·css3·技术
serve the people2 小时前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端
m0_741768857 小时前
使用docker的小例子
运维·docker·容器
罗政8 小时前
[附源码]超简洁个人博客网站搭建+SpringBoot+Vue前后端分离
vue.js·spring boot·后端