docker 安裝tomcat

MagicChild發表於2020-09-28

在騰訊雲上部署自己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即可。

相關文章