docker 安装tomcat

本文介绍了如何在腾讯云服务器上通过Docker安装Tomcat,并详细阐述了部署Java Web工程的过程,包括镜像操作、容器管理、端口映射、防火墙设置以及SpringBoot项目打成war包的步骤。在部署过程中,还分享了解决遇到问题的经验和关键命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在腾讯云上部署自己java web工程 初步探索

腾讯云服务器的远程连接方式通过secureCRT进行连接 (需要配置在腾讯云后台生成的公钥)

连接之后,在linux虚拟机上安装docker

1、检查内核版本,必须是3.10及以上
uname -r
2、安装docker

yum install docker

3、输入y确认安装
4、启动docker

[root@luyuhui java]# systemctl status docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# dock`在这里插入代码片`er -v
Docker version 1.12.6, build 3e8e77d/1.12.6

5、开机启动docker

[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

6、停止docker

systemctl stop docker

在安裝过程中也出现了些问题,不过网上都有解决方案

docker常用命令
镜像操作
docker search 关键字
docker pull 镜像名:tag tag是可选的,tag表示标签,多为软件的版本,默认是lastest
docker images 查看所有本地镜像
docker rmi image-id 删除指定的本地镜像
容器操作

 docker run --name mytomcat -d tomcat:latest    

使用docker镜像tomcat:latest以后台模式启动一个容器,并将容器命名为mytomcat。

 docker ps  查看运行中的容器
 
 docker ps -a  查看所有的容器
 
 docker start 容器id
 
 docker rm 容器id

创建容器时的端口映射

docker run -d -p 8080:8080 tomcat:latest

使用镜像tomcat:latest以后台模式启动一个容器,并将容器的8080端口映射到主机8080端口。

linux的防火墻操作

service firewalld status ;查看防火墙状态
service firewalld stop:关闭防火墙
linux上的jdk安装在linux文件系统即可,容器可以正常使用。

docker安裝tomcat后,工程的部署过程

比较重要的几条命令

docker exec -it  CONTAINER_ID  bash

进入容器终端并且的保留为容器终端的输入形式

在sftp中用put命令上传war包到linux系统(secureCRT按alt + p进入sftp界面)这种方式的自我感觉传输速度较快,但是传输上去之后是放在当前用户的根文件夹,比如root用户登录,传输的文件放在/root文件夹,

linux下docker 拷贝linux文件系统下 文件到docker容器的命令
docker cp chang.war cfa3f9d36b1b:/usr/local/tomcat/webapps
命令中的cfa3…表示的容器id

将war包copy到wenapps下后就完成java web工程的部署
SpringBoot项目打成war包过程:

SpringBoot项目默认的是使用的内置的tomcat,所以直接打成war包还是有问题的


```java
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

作用返回scope = compile,也就是说这个项目在编译,测试,运行阶段都是需要这个artifact(模块)对应的jar包在classpath中。对于scope = provided的情况,可以以为这个模块,在要运行的容器中已经有这个模块了,只影响编译、测试

maven中三种classpath 
编译,测试,运行 

```java
1.compile:默认范围,编译测试运行都有效 
2.provided:在编译和测试时有效 
3.runtime:在测试和运行时有效 
4.test:只在测试时有效 
5.system:在编译和测试时有效,与本机系统关联,可移植性差
疑问**:在引入spring-boot-starter-web后添加spring-boot-starer-

tomcat会不会出现依赖冲突问题。有空利用idea分析,

在tomcat starter中有这么的描述

Starter for using Tomcat as the embedded servlet container. Default servlet container starter used by spring-boot-starter-web
应该是不会冲突,打的war包也能正常启动,但是现在不知道是怎么进行处理的。

pom文件修改后,修改启动类

@SpringBootApplication
public class ResttemplatedemoApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(ResttemplatedemoApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(ResttemplatedemoApplication.class, args);
    }
}
关于为何继承SpringBootServletInitializer,这个类在spring启动过程中,启动什么作用,还需要研究研究源码。

然后maven clean package即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值