dockerfile部署springboot项目(构建镜像:ebuy-docker:v1.0)

文章目录

需求:将提供的Spring Boot项目使用容器化进行部署

分析:

1、Spring Boot项目中使用到了Mysql数据库,先使用docker部署mysql

2、Spring Boot项目使用docker容器进行部署:可以基于上一步java环境的dockerfile创建springboot项目的容器。

实现步骤:

1、使用docker部署mysql

2、使用dockerfile构建Spring Boot镜像

  • 将Spring Boot打包成一个fat jar包
  • 把jar包上传到Linux服务器上
  • 在jar包目录下编写dockerfile文件
  • 构建镜像

3、创建容器进行测试

1、docker部署Mysql

使用docker部署Mysql步骤如下所示:

shell 复制代码
# 创建mysql容器。 -e: 设置环境变量	--privileged=true 开启root用户权限
docker run -di --name mysql01 -p 4306:3306 -v mysql_data01:/var/lib/mysql -v mysql_conf01:/etc/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=1234 mysql:8
shell 复制代码
docker run -di \
  --name mysql01 \
  -p 4306:3306 \
  -v mysql_data01:/var/lib/mysql \
  -v mysql_conf01:/etc/mysql \
  --privileged=true \
  -e MYSQL_ROOT_PASSWORD=1234 \
  mysql:8

使用Navicat连接mysql:

创建数据库:docker

创建表:tb_school

sql 复制代码
CREATE TABLE `tb_school` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

添加测试数据:

sql 复制代码
INSERT INTO `tb_school` VALUES (1, '尚硅谷-北京校区', '北京市昌平区宏福科技园2号楼3层');
INSERT INTO `tb_school` VALUES (2, '尚硅谷-上海校区', '上海市松江区谷阳北路166号大江商厦3层');
INSERT INTO `tb_school` VALUES (3, '尚硅谷-深圳校区', '深圳市宝安区西部硅谷大厦B座C区一层');
INSERT INTO `tb_school` VALUES (4, '尚硅谷-西安校区', '西安市雁塔区和发智能大厦B座3层');
INSERT INTO `tb_school` VALUES (5, '尚硅谷-成都校区', '成都市成华区北辰星拱青创园综合楼3层');
INSERT INTO `tb_school` VALUES (6, '尚硅谷-武汉校区', '武汉市东湖高新区东湖网谷6号楼4层');

2、dockerfile构建镜像

具体步骤:

1.1、在idea中导入课件中的项目资料\day01\ebuy-docker

如果发现项目导进来报错,报的错和jdk或者maven相关的。

检查maven配置和jdk配置。

1.2、修改项目application.yml数据库连接参数

1.3、启动项目访问测试:http://localhost:8081/

1.4、执行mvn package命令进行项目打包

bash 复制代码
E:\尚硅谷\13-尚品甄选\资料\day01\ebuy-docker>mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< com.atguigu.ebuy:ebuy-docker >--------------------
[INFO] Building ebuy-docker 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.3.0:resources (default-resources) @ ebuy-docker ---
[INFO] Copying 1 resource
[INFO] Copying 6 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.10.1:compile (default-compile) @ ebuy-docker ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 6 source files to E:\尚硅谷\13-尚品甄选\资料\day01\ebuy-docker\target\classes
[INFO]
[INFO] --- maven-resources-plugin:3.3.0:testResources (default-testResources) @ ebuy-docker ---
[INFO] skip non existing resourceDirectory E:\尚硅谷\13-尚品甄选\资料\day01\ebuy-docker\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.10.1:testCompile (default-testCompile) @ ebuy-docker ---
[INFO] Changes detected - recompiling the module!
[INFO]
[INFO] --- maven-surefire-plugin:2.22.2:test (default-test) @ ebuy-docker ---
[INFO]
[INFO] --- maven-jar-plugin:3.3.0:jar (default-jar) @ ebuy-docker ---
[INFO] Building jar: E:\尚硅谷\13-尚品甄选\资料\day01\ebuy-docker\target\ebuy-docker-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:3.0.5:repackage (repackage) @ ebuy-docker ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.494 s
[INFO] Finished at: 2024-09-26T14:13:46+08:00
[INFO] ------------------------------------------------------------------------

1.5、虚拟机中新建目录/opt/dockerfileebuy

shell 复制代码
[root@localhost ~]# mkdir /opt/dockerfileebuy
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
apache-tomcat-10.1.10         jdk-17.0.7                                mysql-community-client-8.0.30-1.el7.x86_64.rpm           mysql-community-icu-data-files-8.0.30-1.el7.x86_64.rpm  redis-7.0.10
apache-tomcat-10.1.10.tar.gz  jdk-17_linux-x64_bin.tar.gz               mysql-community-client-plugins-8.0.30-1.el7.x86_64.rpm   mysql-community-libs-8.0.30-1.el7.x86_64.rpm            redis-7.0.10.tar.gz
containerd                    kafka                                     mysql-community-common-8.0.30-1.el7.x86_64.rpm           mysql-community-libs-compat-8.0.30-1.el7.x86_64.rpm     rh
dockerfileebuy                kibana                                    mysql-community-debuginfo-8.0.30-1.el7.x86_64.rpm        mysql-community-server-8.0.30-1.el7.x86_64.rpm          tool
dockerfilejdk17               mongo                                     mysql-community-devel-8.0.30-1.el7.x86_64.rpm            mysql-community-server-debug-8.0.30-1.el7.x86_64.rpm    z3.tar
elasticsearch                 mysql-8.0.30-1.el7.x86_64.rpm-bundle.tar  mysql-community-embedded-compat-8.0.30-1.el7.x86_64.rpm  mysql-community-test-8.0.30-1.el7.x86_64.rpm

1.6、上传jar包到/opt/dockerfileebuy目录下

3、dockerfile文件

/opt/dockerfileebuy目录下新建dockerfile文件

shell 复制代码
[root@localhost dockerfileebuy]# vim dockerfile
shell 复制代码
FROM centos7-jdk17
MAINTAINER atguigu

# 声明容器内主进程所对应的端口
EXPOSE 8081
ADD ebuy-docker-1.0-SNAPSHOT.jar /ebuy-docker-1.0-SNAPSHOT.jar

# 相当于windows中的cd命令
WORKDIR /      
ENTRYPOINT ["java" , "-jar" , "ebuy-docker-1.0-SNAPSHOT.jar"]

目录结构如下所示:

shell 复制代码
[root@localhost dockerfileebuy]# ll
总用量 27320
-rw-r--r--. 1 root root      272 9月  26 14:28 dockerfile
-rw-r--r--. 1 root root 27968970 9月  26 14:24 ebuy-docker-1.0-SNAPSHOT.jar

4、构建镜像 ebuy-docker:v1.0

shell 复制代码
[root@localhost dockerfileebuy]# docker build -t ebuy-docker:v1.0 .
[+] Building 7.2s (7/7) FINISHED                                                                                                                                                                docker:default
 => [internal] load .dockerignore                                                                                                                                                                         0.1s
 => => transferring context: 2B                                                                                                                                                                           0.0s
 => [internal] load build definition from dockerfile                                                                                                                                                      0.1s
 => => transferring dockerfile: 364B                                                                                                                                                                      0.0s
 => [internal] load metadata for docker.io/library/centos7-jdk17:latest                                                                                                                                   0.0s
 => [1/3] FROM docker.io/library/centos7-jdk17                                                                                                                                                            0.1s
 => [internal] load build context                                                                                                                                                                         5.3s
 => => transferring context: 27.97MB                                                                                                                                                                      5.2s
 => [2/3] ADD ebuy-docker-1.0-SNAPSHOT.jar /ebuy-docker-1.0-SNAPSHOT.jar                                                                                                                                  1.2s
 => exporting to image                                                                                                                                                                                    0.3s
 => => exporting layers                                                                                                                                                                                   0.2s
 => => writing image sha256:f21623c70ab5356567f5930660602cb3634bf719fc6cfbbbcf4ab09bd1c5c401                                                                                                              0.0s
 => => naming to docker.io/library/ebuy-docker:v1.0  

5、创建容器 ebuy-docker

shell 复制代码
docker run -d \
   --name ebuy-docker \
   -p 8081:8081 \
   ebuy-docker:v1.0
shell 复制代码
[root@localhost dockerfileebuy]# docker run -d \
>    --name ebuy-docker \
>    -p 8081:8081 \
>    ebuy-docker:v1.0
57068d7ebc26f7209079cd8c3b1fa6627712a6f5f5e8eb8bda793ade46196f6f


6、查看 容器 ebuy-docker 的 / 目录

shell 复制代码
[root@localhost dockerfileebuy]# docker exec -it ebuy-docker /bin/bash
[root@57068d7ebc26 /]# ls
anaconda-post.log  bin  dev  ebuy-docker-1.0-SNAPSHOT.jar  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
相关推荐
好看资源平台几秒前
Spring 全家桶使用教程 —— 后端开发从入门到精通
java·数据库·spring
Satan7124 分钟前
【Spring】Spring Aop基础入门
java·开发语言·jvm
这河里吗l12 分钟前
Java每日面试题(JVM)(day15)
java·开发语言·jvm·笔记·后端
white__ice15 分钟前
2024.9.27
java
AskHarries19 分钟前
开发提效的工具tabby快速入门
spring boot·后端·openai
robot_大菜鸟29 分钟前
Powerbi -l9-异常数据的处理
android·java·powerbi
江南一点雨31 分钟前
又一家培训机构即将倒闭!打工人讨薪无果,想报名的小伙伴擦亮眼睛~
java·程序员
Satan71242 分钟前
【Java】JVM基本组成
java·开发语言·jvm
apz_end1 小时前
Python Flask网页开发基本框架
开发语言·后端·python·学习·flask·编程学习
@月落1 小时前
获取douyin商品详情:API接口的力量
java·前端·数据库