前面一篇文章簡單的介紹了怎麼在宿主機上配置一個簡單的tomcat,這篇blog是對上一篇的拓展mysql
對項目中的服務器和數據進行分離
本項目使用了tomcat做爲服務器,mysql爲數據庫,即分別爲其建立docker容器,以下圖所示
sql
因爲啓動項目時,須要鏈接數據庫,因此須要先配置好數據庫容器
一、首先下載帶有mysql的ubuntu系統的鏡像,並啓動,我是直接在ubuntu系統上安裝的mysql,安裝命令以下docker
sudo apt-get install mysql-server mysql-client
二、若須要其餘容器來訪問該數據庫容器,須要對mysql進行修改
1)修改my.cnf文件數據庫
$vi /etc/mysql/my.cnf bind-address = 127.0.0.1 修改成 bind-address = 0.0.0.0
2)修改數據庫用戶信息
進入到mysql內部apache
$mysql -uroot -p root $use mysql $update user set Host='%' where Host='localhost' $flush privileges
3)加載項目的sql文件ubuntu
$create database mydb $use mydb $source /home/john/mydb.sql
4) 配置mysql自啓動
因爲每次commit一個鏡像的時候,鏡像中的mysql中止運行,須要在啓動鏡像的時候同時啓動docker容器內部的 mysql,使用dockerfile來構建自動啓動內部服務的鏡像,Dockerfile的指令是忽略大小寫的,建議使用大寫,使用 # 做爲註釋,每一行只支持一條指令,每條指令能夠攜帶多個參數。在任一路徑下建立dockerfiletomcat
$vi dockerfile $# Pull image FROM portal:mysqlcommit MAINTAINER wangyk ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh適用於在run一個docker鏡像的時候,自動運行該腳本,此時須要在要提交的docker容器裏面建立該腳本bash
$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該鏡像生成新的鏡像ui
$sudo docker build -t mysql/mysqlfinal .
建立完成最新的鏡像以後,啓動該鏡像
$sudo docker run -i -t <imagesId> /bin/bash
獲取分配的該容器的ip地址
一、首先在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 亞坤