使用docker分離服務與數據庫

前面一篇文章簡單的介紹了怎麼在宿主機上配置一個簡單的tomcat,這篇blog是對上一篇的拓展mysql

配置目標:

對項目中的服務器和數據進行分離
本項目使用了tomcat做爲服務器,mysql爲數據庫,即分別爲其建立docker容器,以下圖所示
圖片描述sql

一 、建立mysql容器

因爲啓動項目時,須要鏈接數據庫,因此須要先配置好數據庫容器
一、首先下載帶有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地址

2、 配置系統服務

一、首先在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 亞坤
相關文章
相關標籤/搜索