Docker Tomcat容器中引用mysql容器
来源:互联网 发布:underscore.js如何 编辑:程序博客网 时间:2024/04/27 21:31
docker 的定义这里就不说了。那种概念性的东西我不太会总结…自己的理解就是它是用来代替装在虚拟机中的服务器的东西,并且对于每一个“虚拟机”,docker中的占用硬盘比虚拟机的少,性能比虚拟机的高。(仅本人理解,具体自己网上搜或到官网看)
我用的ubuntu kylin 15.10 x64的操作系统。安装Docker:
终端中运行:
sudo apt-get install docker.io
Docker支持 Linux、Mac、Windows 等,具体安装方法详见官网。
安装后Docker之后,下载centos镜像,这里下载的是6.7版本:
sudo docker pull centos:6.7
之后下载mysql,这里下载的是最新版:
sudo docker pull mysql
在 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 下载对应操作系统的java(jre或jdk)。
这里下载的是 jdk-8u73-linux-x64.tar.gz 。
在主目录下建立 app 文件夹,即: /home/[用户名]/app,我的用户名为 sccss,则命令为:
mkdir ~/app
或:
mkdir /home/sccss/app
在 jdk-8u73-linux-x64.tar.gz 所在文件夹下运行:
cp jdk-8u73-linux-x64.tar.gz ~/app
将 jdk-8u73-linux-x64.tar.gz 复制到app目录下。然后运行:
tar zxvf jdk-8u73-linux-x64.tar.gz
解压后的文件夹为 jdk1.8.0_73 。该文件夹下有 jre 文件夹。运行:
cp -R jdk1.8.0_73/jre .
将jre目录复制到 app目录下。
同样的方法,在 http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.32/bin/apache-tomcat-8.0.32.tar.gz 下载tomcat8.0.32,并解压到app目录下。运行:
mv apache-tomcat-8.0.32 tomcat
将文件夹改名为 tomcat ,方便之后使用。
使用使用右键菜单或命令行(touch命令 或 vim 命令)创建文件并编辑内容为(vim介绍起来有点多了,不会使用的可自己网络搜索使用方式 。docker下载的centos:6.7中没有vim命令,只有vi命令。):
文件 env.sh
#!/bin/bash#Set Environmentexport JRE_HOME=/root/app/jreexport PATH=$PATH:$JRE_HOME/bin
文件 run.sh
#!/bin/bash#Run tomcatecho "Set environment..."source /env.shecho "Run tomcat..."exec /root/app/tomcat/bin/catalina.sh runecho "End ..."
文件 start.sh
#!/bin/bash#Start tomcatecho "Set environment..."source /env.shecho "Start tomcat..."sh /root/app/tomcat/startup.sh
文件 stop.sh
#!/bin/bash#Stop tomcatecho "Set environment..."source /env.shecho "Stop tomcat..."sh /root/app/tomcat/shutdown.sh
env.sh 设置了JRE_HOME和PATH环境变量,以便tomcat可以找到java。
run.sh 运行tomcat并显示日志,运行后按下Ctrl+c 停止tomcat。
start.sh 启动tomcat后退出。
stop.sh 关闭启动的tomcat。与 start.sh对应。
再之后,需要准备一个测试的javaWeb项目,用来确认之后是否连接到了Mysql服务器。
这里准备了一个简单的测试项目war包:http://pan.baidu.com/s/1eRjzTbc 密码: qa7h
下载后放入新建立的文件夹,我这里是 /home/sccss/tmp/,即 war 路径为 /home/sccss/tmp/test.war
运行后,访问 http://host:port/test/mysql 来测试,mysql root密码应为 123
对应Servlet代码如下:
public class MySQLServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); Connection conn = null; PreparedStatement stat = null; ResultSet res = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://mysql-host:3306/mysql", "root", "123"); stat = conn.prepareStatement("select user from user where user='root'"); res = stat.executeQuery(); if (res.first()) { String name = res.getString("user"); out.println("连接数据库成功! --" + name); } else { out.println("连接数据库成功! -but now data-"); } } catch (ClassNotFoundException e) { System.err.println("数据库驱动加载失败..."); e.printStackTrace(); out.println("数据库驱动加载失败..."); out.println(e.getMessage()); } catch (SQLException e) { System.err.println("数据库连接或执行失败..."); e.printStackTrace(); out.println("数据库连接或执行失败..."); out.println(e.getMessage()); } finally { if(out != null){ out.close(); } if(res != null){ try { res.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stat != null) { try { stat.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }}
可以看到,连接成功后会打印 连接数据库成功! –root
零件准备好了,下面开始组装。
首先构建一个mysql的运行容器,运行(mysql 镜像的使用说明在 : https://hub.docker.com/_/mysql/):
sudo docker run --name mysql-server -e MYSQL_ROOT_PASSWORD=123 -d mysql
以上命令将会由 mysql:lastest 镜像运行一个mysql root密码为 123 的名为 mysql-server的容器,-d参数表示后台运行且打印容器id。
之后运行以下命令来查看容器列表:
sudo docker ps -a
应该可以看上去一个名为 mysql-server 容器。
现在来创建tomcat的镜像。
首先运行一个tomcat 容器,并挂载 /home/sccss/app 目录到 /app。命令如下:
sudo docker run -ti -v /home/sccss/app:/app centos:6.7 /bin/bash
运行上面的命令后会进入容器的shell。
依次运行以下命令:
#在/root下创建app文件平夹mkdir /root/app#将jre、tomcat复制到 /root/app下,将env.sh复制到/root下cp -R /app/jre /root/app/cp -R /app/tomcat /root/app/cp /app/env.sh /root/#将 run.sh start.sh stop.sh 复制到 / 下cp /app/run.sh /cp /app/start.sh /cp /app/stop.sh /
运行以下命令退出容器:
exit
运行以下命令查看刚刚配置tomcat环境的容器id
sudo docker ps -a
查看刚刚运行的镜像(IMAGE)为 centos:6.7的容器Id,这里是 849717a506b7
运行以下命令将容器转换为镜像:
sudo docker commit 849717a506b7 sccss/tomcat:v1
这里将其提交为 sccss/tomcat,版本为 v1 ,名字可根据自己喜好起。
运行以下命令查看镜像:
sudo docker images
mysql容器已经配好并运行起来,tomcat镜像也已经准备好了。下面就开始 牵个线,搭个桥,让它们结合:
sudo docker run -ti -v /home/sccss/tmp:/root/app/tomcat/webapps -p 18080:8080 --link mysql-server:mysql-host sccss/tomcat:v1 /bin/bash
解释一下这条命令: 将主机上的 /home/sccss/tmp目录(存放有test.war)映射到容器的 /root/app/tomcat/webapps, 这样的话,运行容器中的tomcat将会读取我们的test.war。将主机的 18080 映射到容器的 8080,这样可以直接访问主机的18080端口来访问容器中的tomcat中的项目。将name为 mysql-server 的容器地址映射到tomcat容器内部,并命名为 mysql-host 。这样就可以在tomcat容器中通过 mysql-host 访问mysql-server了。见上面servlet源码中的数据库连接语句:jdbc:mysql://mysql-host:3306/mysql
万事具备,只欠运行:
sh /start.sh
现在,打开电脑上的浏览器,访问: http://localhost:18080/test/mysql 查看输入。
ps: 以上代码已经在脑子里跑了一遍,没有问题。。。 若你操作时有问题,请留言,我会修改。 docker我也是初学者,哈哈~~~
- Docker Tomcat容器中引用mysql容器
- Docker中运行mysql容器
- docker:从 tomcat 容器连接到 mysql 容器
- 通过Docker搭建Mysql容器+Tomcat容器连接环境
- centos中使用docker创建mysql容器
- MySQL(6)--复制,docker容器中
- Centos7服务器中Docker启动mysql容器
- docker容器centos中安装mysql
- 在docker中启动mysql容器
- Docker创建MySQL容器
- Docker创建MySQL容器
- Docker创建MySQL容器
- docker创建mysql容器
- docker容器中查看容器linux版本
- docker容器中,一个容器一直Resatring
- Docker安装Mysql数据库容器
- docker 容器 mysql乱码问题
- Chapter 1 在Docker中创建Mysql容器
- Handler各种使用情况的内存泄露分析和避免
- 1137 矩阵乘法
- hadoop 相关操作
- python and or and-or
- Hilbert曲线简介及生成算法
- Docker Tomcat容器中引用mysql容器
- 聊聊目标文件到底长什么样子
- UNP卷一学习笔记:基本TCP套接字
- 1113 矩阵快速幂
- Java基础之重生之路
- PyCharm4注册码
- linux根目录空间不足解决方案
- uiblib 学戏笔记
- 如何解决Office 2010中Excel文档双击打不开问题?