服务器 > 服务器 > 云虚拟主机

docker之tomcat8.5容器中如何部署war包

33人参与 2025-02-14 云虚拟主机

使用docker-compose部署war项目到tomcat8.5容器

使用docker-compose 创建、启动容器

1.创建docker-compose.yml文件

version: '3'
services:
    tomcat8:
        restart: always
        image: tomcat:8.5
        container_name: tomcat8.5
        ports:
            - 8080:8080
        volumes:
            - e://docker/tomcat/webapps:/usr/local/tomcat/webapps
            - e://docker/tomcat/logs:/usr/local/tomcat/logs
        environment:
            tz: asia/shanghai
        links:
            - db
        networks:
            - mynetwork
    db:
        image: mysql:8.0.15
        restart: always
        environment:
            mysql_root_password: 123456
            mysql_database: testdocker0901
            mysql_user: root
            mysql_password: 123456
        volumes:
            - e://docker/mysql/data:/var/lib/mysql
        container_name: mysql8.0
        ports: 
            - 4306:3306
        networks:
            - mynetwork
networks:
    mynetwork:
        driver: bridge

volumesdocker-compose.yml 文件中用于指定容器和本地文件系统之间共享数据的部分。

示例中,我们有两个卷配置:

volumes:
  - e://docker/tomcat/webapps:/usr/local/tomcat/webapps
  - e://docker/tomcat/logs:/usr/local/tomcat/logs

这两个卷配置将本地文件系统中的两个目录挂载到tomcat容器中的相应位置。

通过使用卷,您可以轻松地在主机和容器之间共享数据,并在不影响容器的情况下进行文件更改。

请注意:

路径分隔符在windows上是反斜杠(\),但在docker中需要使用正斜杠(/)。因此,在您的实际配置中,可能需要将路径改为 e:/docker/tomcat/webappse:/docker/tomcat/logs

这是一个使用docker compose编排tomcat和mysql容器的docker-compose.yml文件。

这样,您可以通过运行docker-compose up命令来启动这些容器。

2.使用docker-compose创建并启动项目所需要的容器

::进入docker-compose.yml文件所在的目录
::命令启动
docker-compose up -d

可以看到容器已启动:

3.使用sqlyog连接docker里的mysql容器

mysql容器的3306端口映射到宿主机的4306端口,所以这里的端口号填写4306

出现错误2058表明在使用sqlyog连接mysql时,发生了caching_sha2_password插件无法加载的问题。

这是由于mysql 8.0版本开始默认使用caching_sha2_password作为身份验证插件,而较旧的mysql客户端(如sqlyog)可能不支持该插件。

在mysql容器中重新创建用户:

::在正在运行的容器中 查找到mysql容器的名称或id
docker ps
:: 在mysql容器中打开交互式终端
docker exec -it mysql8.0 sh

#登录mysql
mysql -h localhost -u root -p
123456
-- 设置root用户密码过期规则为从不过期 (set the root user password expiration rule to never expire)
alter user 'root'@'localhost' identified by '123456' password expire never;
 
-- 为root用户设置密码,并使用mysql_native_password插件进行验证 (set a password for the root user and verify it using the mysql_native_password plug-in)
alter user 'root'@'%' identified with mysql_native_password by '123456';
 
-- 刷新权限,使修改后的权限生效 (refresh permissions to make the new permissions take effect)
flush privileges;

docker exec -it mysql:8.0 sh 是一个docker命令,用于在名为 mysql 的8.0版本镜像的容器中打开一个交互式的shell终端。

使用以上命令,我们可以进入正在运行的mysql:8.0容器的shell终端,以便执行其他命令或与容器进行交互。

请注意,您需要确保已经使用正确的镜像名称和版本以及已经运行了名为 mysql8.0 的容器。

再次使用sqlyog连接数据库

完成一个springboot项目,打包war

1.导入项目的mysql数据库

导入项目中使用的mysql数据库

/* testdocker.sql */
create database /*!32312 if not exists*/`testdocker0901` /*!40100 default character set utf8 */;

use `testdocker0901`;

/*table structure for table `student` */

drop table if exists `student`;

create table `student` (
  `id` int(10) not null auto_increment comment 'id',
  `name` varchar(10) not null comment '学生姓名',
  `sex` tinyint(1) not null comment '1男0女',
  `age` int(3) not null comment '年龄',
  primary key (`id`)
) engine=innodb auto_increment=4 default charset=utf8;

/*data for the table `student` */

insert  into `student`(`id`,`name`,`sex`,`age`) values (1,'张三',0,23),(2,'李四',1,20),(3,'王五',1,22);

2.配置项目数据库的连接

在你的spring boot项目中,你可以通过配置文件或者代码来配置连接到mysql容器的数据库连接。

配置文件方式:

1.打开你的spring boot项目中的application.propertiesapplication.yml文件。

2.在配置文件中,设置以下属性来配置mysql连接:

spring.datasource.url=jdbc:mysql://db:3306/testdocker0901?useunicode=true&characterencoding=utf8&usessl=true&servertimezone=gmt
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.driver

这里的 db是你在docker compose文件中命名的mysql容器的别名,testdocker0901 是你在mysql容器中的数据库名称。

3.使用命令mvn package 打包

4.将war包部署到tomcat容器中

在将war包重命名为testtomcatdocker.war并放置到e://docker/tomcat/webapps目录的过程中,您可以通过以下步骤完成:

  1. 将您的war包命名为testtomcatdocker.war
  2. 将重命名的testtomcatdocker.war文件放置到您的本地文件系统上的e://docker/tomcat/webapps目录中。

确保您已按照上述路径创建了e://docker/tomcat/webapps目录。这样一来,tomcat容器启动时将会将该目录挂载到容器内部,从而使war包可供tomcat服务器加载和运行。

请确保您的docker compose文件已正确配置将您的本地目录e://docker/tomcat/webapps挂载到tomcat容器的/usr/local/tomcat/webapps目录。这样可以确保应用程序能够在容器中正确访问war包。

浏览器中访问 http://localhost:8080/testtomcatdocker

将war包重命名为root.war ,重新部署

浏览器访问 http://localhost:8080 ,点击按钮请求数据,能正常访问,问题解决!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

docker容器增加或者修改容器映射端口的实现方法

02-14

docker-compose部署nginx教程

02-14

docker-compose如何定义一个桥接网络,并为该网络配置一个IP地址池

02-14

MySQL docker容器数据更新统计shell脚本代码方式

02-14

docker-compose如何自定义network

02-14

docker安装及运行MySQL5.7容器完整脚本及说明

02-14

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论