idea docker docker-compose发布springboot站点到tomcat
允许docker被远程访问
见:https://www.cnblogs.com/wintersoft/p/10921396.html
教程:https://spring.io/guides/gs/spring-boot-docker/#initial
在idea新建项目
spring boot启动类加上
@RestController
和
@RequestMapping("/")
public String home() {
return "Hello Docker!";
}
在启动类同级,新建Servletinitializer类
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class Servletinitializer extends SpringBootServletInitializer { @Override
protected SpringApplicationBuilder
configure(SpringApplicationBuilder builder) {
return builder.sources(DockerDemo2Application.class);
}
}
pom.xml加入
<packaging>war</packaging>
和
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency> <dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
点击idea右上的Edit Confgurations -> + -> Docker -> Dockerfile,配置如图
生成war包,终端输入:mvn clean package
项目根目录新建/tomcat/conf
复制tomcat的server.xml到/tomcat/conf
若没有tomcat配置文件可以下载一个,如:
wget -P /opt/downloads http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz
tar zxvf /opt/downloads/apache-tomcat-9.0.20.tar.gz -C /opt
server.xml的host节点内添加<Context path="" docBase="app" reloadable="true" debug="0" />
项目根目录创建Dockerfile
FROM tomcat
MAINTAINER sundong
ARG WAR=docker-demo2-1.0.0.war
COPY /tomcat/conf/server.xml /publish/tomcat/conf/server.xml
COPY target/$WAR /publish/app/$WAR
RUN mkdir $CATALINA_HOME/webapps/app \
&& cp /publish/app/$WAR $CATALINA_HOME/webapps/app \
&& cp /publish/tomcat/conf/server.xml $CATALINA_HOME/conf \
&& unzip $CATALINA_HOME/webapps/app/$WAR -d $CATALINA_HOME/webapps/app/ \
&& rm $CATALINA_HOME/webapps/app/$WAR \
&& cd $CATALINA_HOME/webapps/app && echo "succ" > a.txt
EXPOSE 8080
项目根目录创建docker-compose.yml
version: '3.4'
services:
dockerweb:
image: dockerdemox2:latest
container_name: dockerdemox2
restart: always
build:
context: .
dockerfile: Dockerfile
volumes:
- ./tomcat:/publish/tomcat
- ./target:/publish/app
ports:
- "28080:8080"
解决tomcat启动慢
https://www.cnblogs.com/wintersoft/p/10942845.html
把项目中的target文件夹的war包、tomcat文件夹、Dockerfile和docker-compose.yml 复制到centos
进入centos网站目录
docker-compose up --build
或
docker-compose build
docker-compose up
浏览器输入192.168.1.102:38080,测试站点是否启动成功
若没问题,退出后,以守护进程启动站点
docker-compose up -d
idea docker docker-compose发布springboot站点到tomcat的更多相关文章
- Visual Studio 2019 使用 Web Deploy 发布远程站点到IIS服务器
Visual Studio 2019 使用 Web Deploy 发布远程站点到IIS服务器的方式 在开发完项目之后,我们需要把开发的项目发布到指定的服务器上,有两种方式,如下 1.把项目发布成文件系 ...
- Docker+Jenkins+Git发布SpringBoot应用
Doccker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之 ...
- DOCKER 学习笔记5 Springboot+nginx+mysql 容器编排
前言 在上节的内容中,我们已经通过一个简单的实例,将Docker-compose 进行了实际的应用.这一小节中.我们将通过学习和了解,着重认识容器的编排,上一节只算是一个小小的测试.在这一节中.我们将 ...
- 【Docker】Maven打包SpringBoot项目成Docker镜像并上传到Harbor仓库(Eclipse、STS、IDEA、Maven通用)
写在前面 最近,在研究如何使用Maven将SpringBoot项目打包成Docker镜像并发布到Harbor仓库,网上翻阅了很多博客和资料,发现大部分都是在复制粘贴别人的东西,没有经过实践的检验,根本 ...
- 小白学Docker之Compose
承接上篇文章:小白学Docker之基础篇,自学网站来源于https://docs.docker.com/get-started 概念 Compose是一个编排和运行多容器Docker应用的工具,主要是 ...
- jenkins+maven+docker集成java发布(一)自动发布
JAVA项目持续集成发布 标签(空格分隔): java jenkins 微服务中持续集成自动发布是很重要的一个环节,将不同的模块应用自动部署到一台或者N台服务器中如果采用人工部署的方式不太现实 git ...
- Docker学习—Compose
前言 前面<Docker学习-DockerFile>文中介绍了dockerfile相关的语法,及使用方式:接下来了解docker三剑客之一的 Compose:接下来详细学习. 一.dock ...
- Docker之Compose服务编排
Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Comp ...
- (转)Docker之Compose服务编排
转自:https://www.cnblogs.com/52fhy/p/5991344.html Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过 ...
随机推荐
- JavaWeb 之 JSTL 标签
JSTL 标签库 一.概述 1.概念 JSTL : JavaServer Pages Tag Library JSP标准标签库. 是由 Apache 组织提供的开源的免费的 jsp 标签. 2.作用 ...
- Android为TV端助力之热修复原理
通过源码我们知道Android加载类是通过ClassLoad类里面的findClass先去查找的,如下图所示 通过看源码我们知道,ClassLoad是一个抽象类,它本身并没有实现findclass() ...
- Postgresql 常用操作
表所有者一括变更 select 'alter table public.'|| tablename ||' owner to appuser;' from pg_tables where tableo ...
- sql 查询某个字段最长的记录
sql 查询文本字段中值的长度最长的记录 一.函数1.SQL ServerLEN() 函数返回文本字段中值的长度.SELECT LEN(column_name) FROM table_name;2. ...
- PHP 两个比较运算符 [??] [?:] 差别
1.[??] NULL 合并操作符$a ?? $b即isset($a) ? $a : $b; 注:isset() 已设置并且不为NULL 2.[?:] 三元运算符的简写形式$a ?: $b即$a ? ...
- Node: 开发命令行程序
CLI 的全称是 Command-line Interface (命令行界面),即在命令行接受用户的键盘输入并作出响应和执行的程序. 在 Node.js 中,全局安装的包一般都具有命令行界面的功能,例 ...
- Linux 目录和文件的操作
整理常用的linux命令,关于目录和文件的操作,用于巩固记忆,以备不时之需. [root@localhost ~] root:当前用户 localhost:主机名 ~:当前所在位置 符号#:管理员 符 ...
- sklearn.model_selection 的train_test_split方法和参数
train_test_split是sklearn中用于划分数据集,即将原始数据集划分成测试集和训练集两部分的函数. from sklearn.model_selection import train_ ...
- django项目中使用手机号登录
本文使用聚合数据的短信接口,需要先获取到申请接口的appkey和模板id 项目目录下创建ubtils文件夹,定义返回随机验证码和调取短信接口的函数 function.py文件 import rando ...
- 题解 UVa11752
题目大意 输出所有小于 \(2^{64}-1\) 的正整数 \(n\), 使得 \(\exists p, q, a, b\in \mathbb{N+}, p\neq q\rightarrow a^p= ...