dockerを使用してサービスとデータベースを分離する


前の記事では、ホストホストに簡単な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の命令は大文字で、#を注釈として使用することをお勧めします.各行には1つの命令しかサポートされていません.各命令は複数のパラメータを運ぶことができる.任意のパスで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"  mysql:mysqlfinal
  
$sudo docker commit -m=mysql    -a=wyk1184  mysql:mysqlfinal

作成後、imagesに保存されたミラーを見つけることができます.この場合、dockerfileが必要です.このミラーは新しいミラーを生成します.
$sudo docker build -t mysql/mysqlfinal .

最新のミラーを作成した後、ミラーを起動します.
$sudo docker run -i -t  /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 .

新しいミラーを取得して新しい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