前面一篇文章简单的介绍了怎么在宿主机上配置一个简单的tomcat,这篇blog是对上一篇的拓展

配置目标:

对项目中的服务器和数据进行分离
本项目使用了tomcat作为服务器,mysql为数据库,即分别为其创建docker容器,如下图所示

一 、创建mysql容器

由于启动项目时,需要连接数据库,所以需要先配置好数据库容器
1、首先下载带有mysql的ubuntu系统的镜像,并启动,我是直接在ubuntu系统上安装的mysql,安装命令如下

 sudo apt-get install mysql-server mysql-client

2、若需要其他容器来访问该数据库容器,需要对mysql进行修改
1)修改my.cnf文件

    $vi /etc/mysql/my.cnf bind-address = 127.0.0.1  修改为     bind-address = 0.0.0.0

2)修改数据库用户信息
进入到mysql内部

    $mysql -uroot -p root $use mysql$update user set Host='%' where Host='localhost'$flush privileges

3)加载项目的sql文件

    $create database mydb$use mydb$source /home/john/mydb.sql

4) 配置mysql自启动
由于每次commit一个镜像的时候,镜像中的mysql停止运行,需要在启动镜像的时候同时启动docker容器内部的 mysql,使用dockerfile来构建自动启动内部服务的镜像,Dockerfile的指令是忽略大小写的,建议使用大写,使用 # 作为注释,每一行只支持一条指令,每条指令可以携带多个参数。在任一路径下创建dockerfile

$vi dockerfile
$# Pull image
FROM portal:mysqlcommit
MAINTAINER wangyk
ENTRYPOINT ["/entrypoint.sh"]

entrypoint.sh适用于在run一个docker镜像的时候,自动运行该脚本,此时需要在要提交的docker容器里面创建该脚本

$vi /entrypoint.sh
$#!/bin/sh -e
/etc/init.d/mysql start
bash

创建之后,提交已修改的docker镜像

$sudo docker commit -m "mysql最终版" -a "wyk1184" <containerId> mysql:mysqlfinal
或者
$sudo docker commit -m=mysql最终版 -a=wyk1184 <containerId> mysql:mysqlfinal

创建之后,可以在images中找到已保存的镜像,这时候需要dockerfile来build该镜像生成新的镜像

$sudo docker build -t mysql/mysqlfinal .

创建完成最新的镜像之后,启动该镜像

$sudo docker run -i -t <imagesId> /bin/bash

获取分配的该容器的ip地址

二、 配置系统服务

1、首先在docker的镜像中配置tomcat,这个在之前的博客中详细的介绍了如何配置,其中有一点要注意的就是环境变量的配置,之前的博客中介绍需要修改 ~/.bashrc 中的环境变量,但是在之后的自启动服务的时候,我发现脚本在自启动的时候无法找到环境变量,所以建议在tomcat的bin目录下的startup.sh里修改环境变量,如上文所示,把环境变量的数据写在该文件里,在脚本启动的时候,赋给系统环境变量,

export JAVA_HOME=/usr/local/jdk1.8.0_60
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

可以解决环境变量丢失的情况,(配置环境变量还可以修改/etc/profile 文件,这几种方式稍后会做一个整理),
同样也需要为该镜像做一个entrypoint.sh的脚本用于自启动,在该容器中

$vi /entrypoint.sh
$#!/bin/sh -e
sh /home/ai/tomcat/apache-tomcat-8-ai/bin/startup.sh
bash

使用commit来提交该容器的镜像,创建dockerfile

$vi dockerfile
$# Pull image
FROM portal:aivvvvv8
MAINTAINER wangyk
ENTRYPOINT ["/entrypoint.sh"]

使用build来创建新的镜像

$sudo docker build -t portal/aivvvv8 .

获得新的镜像<imagesId>
启动新的tomcat服务

$sudo docker run -t -i -p 58081:8080 --add-host portalmysql.iscas-haiyun.com:172.17.0.5 1e3457670a0c /bin/bash

-p 58081:8080 对外映射58081端口
--add-host portalmysql.iscas-haiyun.com:172.17.0.5 添加host的地址
这样就可以启动该服务了

                                                                    from 亚坤

使用docker分离服务与数据库相关推荐

  1. ef mysql 读写分离_基于 EntityFramework 的数据库主从读写分离服务插件

    基于 EntityFramework 的数据库主从读写分离服务插件 1. 版本信息和源码 1.1版本信息 v1.01 beta(2015-04-07),基于 EF 6.1 开发,支持 EF 6.1 之 ...

  2. 基于docker微服务架构_使用基于微服务的流架构更好地进行大规模的复杂事件处理(第1部分)...

    基于docker微服务架构 基于微服务的流架构与开源规则引擎相结合,使实时业务规则变得容易 这篇文章旨在详细介绍我将OSS业务规则引擎与Kafka风格的现代流消息传递系统集成在一起的项目. 该项目的目 ...

  3. IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议

    1.前言 IM应用从服务端数据的角度来看,它是一种很特殊的应用场景,抛开基础数据.增值业务和附属功能不谈,单从IM聊天工具的立身之本--聊天数据来说,理论上是不需要在服务端存储的(或者说只需要短暂存储 ...

  4. 微服务和数据库到底是什么关系?

    过去几年来,"微服务架构"这个术语持续火热,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式.尽管这种架构风格没有确切的定义,但围绕业务能力,自动化部署,网点智能以及 ...

  5. 使用Docker构建服务(6)

    1. 构建第一个应用 要构建的第一个应用是使用Jekyll框架的自定义网站.我们会构建以下两个镜像. ** 一个镜像安装了Jekyll及其他用于构建Jekyll网站的必要的软件包. ** 一个镜像通过 ...

  6. Spring Cloud与Docker微服务架构实战 PDF版 内含目录

    Spring Cloud与Docker微服务架构实战  目录 1 微服务架构概述 1 1.1 单体应用架构存在的问题1 1.2 如何解决单体应用架构存在的问题3 1.3 什么是微服务3 1.4 微服务 ...

  7. Docker -- 2 -- 利用docker部署网站和数据库

    在Docker – 系统整洁之道 – 1中已经对Docker的一些命令和Docker镜像的使用及操作做了记录. 这次就利用docker进行一次真正的实例使用,使用docker搭建一个简单的答题系统,这 ...

  8. 搭建docker,docker搭建达梦数据库,详细【图文】

    搭建docker并基于docker搭建达梦数据库 搭建docker 搭建docker 修改docker存储 修改docker镜像 搭建达梦数据库 搭建达梦数据库 测试连接 创建用户 Dbever测试连 ...

  9. docker的服务编排

    docker 服务编排 docker-compose命令 docker compose 网络管理 想学习更全面的docker知识可以点击右侧: Docker的概念及基本指令学习(全) docker 服 ...

  10. 我是如何把微服务的这个模式落地的:一个服务一个数据库模式(中)

    从我接触微服务以来,迄今也得有五六年了.断断续续要么从零开始,要么中途接手,也经历了 5 套微服务项目了. 从这些项目中的经验以及和同行交流来看,根据业务切分微服务的方法总的来说思路不复杂,但是落地总 ...

最新文章

  1. memory matlab,memory – 在MATLAB中处理大量结构
  2. expdp\impdp及exp\imp
  3. WSAEWOULDBLOCK: Resource temporarily unavailable
  4. artdialog5 bug
  5. select,poll,epoll的归纳总结区分
  6. spring cloud + spring boot + springmvc+mybatis分布式微服务云架构
  7. php如何增加字段,php如何增加字段
  8. postman提交文件及get、post请求
  9. vue-cli webpack浅析
  10. 关于H3C-WAP712C AP的胖瘦切换说明
  11. Photoshop cc2019 破解教程
  12. 初级第八旬03— 初级课程第八旬试题
  13. bmon 带宽监视器
  14. linux文件夹可视化工具,4款简单实用的的服务器文件管理工具推荐
  15. 使用MATLAB2010实现AVI视频播放
  16. 定期年化40%,我把5000多个FIL全部存入了DMEX平台
  17. ubuntu docker的cron定时任务不执行
  18. python无法正常启动0xc000007b_应用程序无法正常启动(0xc000007b)。
  19. WINZIP压缩文件怎么加密?
  20. postgresql实现存在则更新,不存在则插入

热门文章

  1. vscode还用装git_如何给VScode配置git
  2. arcgis数据量大显示慢_优化MapGIS地图显示速度我的七个方法
  3. python确定指标权重_python 实现熵权法确定各指标的权重
  4. linux 内核挂起 ping,Linux内核安全详解 ping到死复活方法
  5. as5300g2 nas软件功能_浪潮AS5300G2 5500G2存储2U12
  6. 客服机器人代码_企业微信群机器人如何快速集成?无需开发连接微信公众号,表单系统,钉钉,推广,CRM,客服系统和数据库...
  7. 用联发科芯片的手机能升级鸿蒙吗,华为鸿蒙系统降临!首批升级手机确定,联发科芯片被放弃?...
  8. 网页设计如何排成一列_学习DIV+CSS网页布局之一列布局
  9. 2D Tookit (一) 精灵切割
  10. linux忘记开机密码解决方案