docker部署war包到阿里云
最近买了个阿里云服务器,配置1核2g内存,学习够了。记录下过程。
1,服务器相关,请看下图,云服务器主要配置是安全组和密钥,前者是开放端口,后者可以用于远程连接(比如我windows系统通过putty远程连接linux主机)

2,服务器安装docker,pull tomcat和mysql镜像(如docker pull tomcat)
3,创建自定义网络,用于容器间的通信,命令如下:
docker network create --subnet 192.168.49.0/ --gateway 192.168.49.1 network0
以上创建了一个新的网络network0,可以通过docker network ls查看原始的网络和创建的网络
4,使用mysql镜像创建并启动容器,命令如下:
docker run -d -p : --name mysql --net network0 --ip 192.168.49.10 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=blog hub.c..com/library/mysql
以上,-d表示后台运行,-p 3366:3306表示将容器的3306端口映射到服务器的3366端口(如果不与外界进行数据传输,感觉没必要),--name 后面是容器的名字,--net 指定容器使用的网络,--ip 指定容器所属ip,-e 设置环境变量,此处设置了mysql的密码和创建了一个数据库blog(不是必要),最后一串东西是mysql镜像的名字(此处无tag)
5,mysql容器启动后,如果要在mysql里设置数据库和表,需要先进入容器,命令为:
docker exec -it mysql /bin/bash
表示进入mysql容器并使用bash命令模式,然后可以正常操作如mysql -uroot -p回车输入刚才指定的密码,创建数据库和表。其实最好通过Dockerfile文件来实现,直接进入容器操作属于黑箱操作,因为这个操作对于别人来说是不可知的,自己可能都会忘,而Dockerfile必定是记录了镜像是如何构建的。我现在还不熟悉Dockerfile。而且应该使用Dockerfile代替commit创建镜像,总之Dockerfile才是正道。。。
6,使用tomcat镜像启动容器,命令如下:
docker run -d -p : --name tomcat --net network0 --ip 192.168.49.11 hub.c..com/library/tomcat
以上跟mysql容器的创建差不多,要注意的是需要通信的容器间其ip要处于同一网段,也就是ip前3个数字相同。
7,复制war包到tomcat容器内,命令如下:
docker cp app.war tomcat:/usr/local/tomcat/webapps
以上表示将当前目录下的app.war包,复制到名称为tomcat的容器的/usr/local/tomcat/webapps目录下。这样项目就部署好了。在第6步时可以使用-v命令将tomcat的webapps与主机某个目录进行挂载,如果不进行挂载,则会在主机/var/lib/docker/volumes/配置随机的一个挂载目录,容器销毁后此目录还是存在,久了会占内存吧。最好挂载指定目录,自己也好清理。
ps:
war包中mysql的配置:url里的ip为mysql容器创建时指定的ip,数据库和表对应容器中创建的数据库和表。
windows推荐使用winscp软件进行云服务器文件的上传和下载。
第7步之后访问网站可能不会立即响应,请耐心等待若干分钟后再试,项目部署对于服务器可能需要点时间。
docker部署war包到阿里云的更多相关文章
- 如何在阿里云上部署war包到tomcat服务器
一. 准备工作:xshell和xftp 首先我们得确保,xshell能够远程连接阿里云ECS,xftp能够保证windows和linux之间的文件传输(当然也可以选择FileZilla,但xftp感觉 ...
- docker学习5-docker安装tomcat环境和部署war包
前言 tomcat部署web项目非常方便,把war包放到webapps目录就可以了.本篇使用docker快速搭建一个tomcat环境 下载tomcat镜像 拉取官方最新版tomcat镜像 [root@ ...
- Docker容器Tomcat部署war包
在docker容器中使用tomcat部署war包主要包括四个步骤,创建tomcat容器.上传war包到容器.重启容器.访问应用. 1.创建tomcat容器 使用docker run -d --nam ...
- 部署Java项目到阿里云服务器(Ubuntu16.04 64位)
生成Jar包 1.进入到项目所在的路径下,打开cmd命令控制台,使用如下命令打包项目. mvn package --前提将项目中使用的maven配置到系统的环境变量中 2.打包完成的jar包在项目目录 ...
- 记录centos7下tomcat部署war包过程
记录centos7下tomcat部署war包过程 1.官网下载tomcat安装包.gz结尾的 2.上传到/usr/local/ ,并解压到tomcat目录下 3.进入tomcat/bin目录,运行./ ...
- Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏
Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏 云收藏项目已经开源3年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时 ...
- Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统
Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...
- docker自定义镜像上传阿里云
1.alpine制作jdk镜像 2.Alpine制作jre镜像(瘦身) 3.Docker镜像上传至阿里云 alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻 ...
- tomcat本地部署war包的方式
最近学习java,在本地tomcat部署时,主要采取以下方式: 一.本地构建生成war包 在本地项目中的terminal下,使用命令 “mvn clean install”或 先执行“mvn clea ...
随机推荐
- 【luogu P1955 [NOI2015]程序自动分析】 题解
题目链接:https://www.luogu.org/problemnew/show/P1955 并查集操作,1e9要离散化,数组要开大一些,操作前先执行合并操作 样例好毒啊(全是排好序的) #inc ...
- 深度包检测(DPI)详细介绍
目录 简介 背景 流量识别 常用功能 具体功能 做法 特征识别 架构举例 部署方式 串接方式 并接方式 存在问题 检测引擎举例 参考文献 简介 DPI(Deep Packet Inspection)深 ...
- Objective-C基础知识之“类”
Objective-C语言是iOS开发的专用语言,虽然现在在逐步被swift语言取代,但是仍可以作为基础学习,学会Objective-C之后入手swift也是相当快速.今天我来简谈一下关于OC中的类. ...
- es6 入坑笔记(一)---let,const,解构,字符串模板
let 全面取代var 大概相似于C++的定义,一个变量必须得先定义后使用,没有预编译 注意let的作用域,一个{}就是一个作用域,上述规则须在一个作用于内 坑:for(let i =0;i < ...
- 大专生自学html5到找到工作的心得
先做个自我介绍,我13年考上一所很烂专科民办的学校,学的是生物专业,具体的学校名称我就不说出来献丑了.13年我就辍学了,我在那样的学校,一年学费要1万多,但是根本没有人学习,我实在看不到希望,我就退学 ...
- laravel5.5源码笔记(二、服务提供者provider)
laravel里所谓的provider服务提供者,其实是对某一类功能进行整合,与做一些使用前的初始化引导工作.laravel里的服务提供者也分为,系统核心服务提供者.与一般系统服务提供者.例如上一篇博 ...
- 【原创】Dynamics CRM 2015/2016,以PDF的形式打开SSRS报表。
基本步骤: 使用SSRS建立报表,以下的例子是以记录的GUID作为报表的参数 获取ReportSession 和 ControlId来调用报表 以PDF的形式预览报表 一.根据报表的名称获取报表的GU ...
- 【npm 指令】 (不定时持续更新)
查看webpack所有的版本及更多信息 npm info webpack 查看webpack所有的版本 npm info webpack versions 查看webpack最新的版本 npm vie ...
- ACM1020:Encoding
Problem Description Given a string containing only 'A' - 'Z', we could encode it using the following ...
- c语言智能指针 附完整示例代码
是的,你没有看错, 不是c++不是c#, 就是你认识的那个c语言. 在很长一段时间里,c的内存管理问题, 层出不穷,不是编写的时候特别费劲繁琐, 就是碰到内存泄漏排查的各种困难, 特别在多线程环境下, ...