備忘録
環境
・Windows 10 professional 64bit
VirtualBox環境
・OS : CentOS7
・メインメモリ : 2048MB
・ストレージ : 50GB (33.5GB使用中)
・フォルダマウントあり
Apache + PHP + MySQLのWebサーバ
・Apache 2.4.6
・PHP 7.2.10
・mysql Ver 8.0.12
VirtualBox環境を抽出
・yum history
を使用して実行したyumの履歴を表示
・yum history info ID
を使用して実行た内容を確認する
全てのyumを確認すると,Apache, PHP, MySQLの他にXdebug
がいインストールされているのが確認できた
上記より,Apache,PHP,MySQL,Xdebugの設定ファイルをコピーしてVirtualBoxから抽出する
【各設定ファイル】
Apache : /etc/httpd
PHP, Xdebug : /etc/php.ini, /etc/php.d
MySQL : /etc/my.cnf
また,DBのDUMPファイルを取得する
mysqldump -u root -p db名 > db名.dump
これらのファイルをまとめて圧縮し取り出す
# ファイルを1つのフォルダ(SetFolder)にまとめてから
tar -cf setting.tar ./SetFolder
gzip -9 setting.tar
この圧縮したデータをマウントしているディレクトリに移動させるか,SFTP等を使い抽出する
Docker環境の作成
Docker-Composeの作成
WebサーバとDBサーバを立ち上げるDocker-Composeを作成する
version: '3'
services:
db:
image : mysql
environment :
- MYSQL_ROOT_PASSWORD=rootpass
- MYSQL_DATABASE=db
- MYSQL_USER = user
- MYSQL_PASSWORD= pass
ports :
- "53306:3306"
volumes :
- "/d/Transplant/db:/docker-entrypoint-initdb.d"
container_name: "trans_db"
web:
depends_on :
- db
build : ./build/web/
ports :
- "50080:80"
volumes :
- "/d/Transplant/html:/var/www/html"
links :
- db
container_name: "trans_web"
working_dir : /var/www/html/sg
privileged : true
【各設定】
・version : Docker-Composeのバージョン
・services : 立ち上げるサービスの定義
・db, web : 立ち上げるサービス名
・images : インストールするイメージ
・environment : サービスの環境変数
・ports : 公開用ポート(ホスト側:コンテナ側)
・volumes : マウントするパス(ホスト側:コンテナ側)
・container_name : コンテナ名
・depends_on : 依存関係
・build : 構築時のオプション
・links : 他のサービスとリンクさせる
・working_dir : コンテナ内のワーキングディレクトリ
・privileged : すべてのデバイスのアクセス許可
dockerfileの作成
Webサーバ構築オプション(build
)で使用するdockerfileを作成する
FROM centos:7
RUN yum -y update
RUN yum -y install httpd
RUN yum install -y epel-release && \
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
RUN yum -y remove php-*
RUN yum -y install --enablerepo=remi,remi-php72 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql
RUN yum --skip-broken --disablerepo=* --enablerepo=remi-php72 -y install php-pecl-xdebug
EXPOSE 80
RUN systemctl enable httpd
CMD ["/sbin/init"]
CentOS7をベースにApacheとPHP,MySQL,Xdebugをインストールする
CentOS7のリポジトリではPHP7.2をインストールできないので,remiリポジトリをインストールしてremiリポジトリを使用してPHP7.2をインストールする
最後に80ポートをエクスポートし,Apacheを自動起動するようにする
Docker-Composeとdockerfileのディレクトリ関係は以下のようになっている
docker
|--docker-compose.yml
|--build
|--web
|--dockerfile
コンテナ生成
・Docker-Composeのあるディレクトリで以下のコマンドを実行する
$ docker-compose up -d
すると,docker-compose.ymlに記載された通りにコンテナが立ち上がる
サーバ環境設定
・VirtualBoxから抽出した設定ファイルを元にサーバの設定を行う
【各設定ファイル】
Webサーバ
Apache : /etc/httpd
PHP, Xdebug : /etc/php.ini, /etc/php.d
DBサーバ
MySQL : /etc/my.cnf
プログラム,DBの配置
・Webサーバにプログラムを配置する
マウントしているフォルダにプログラムを配置する
・DBサーバにデータを取り込む
マウントしているフォルダにDUMPファイルを配置し,コンテナ内でリストアをする
# DBサーバコンテナに入る
$ docker exec -it trans_db bash
# マウントされているフォルダに移動する
$ mysql -u root -p db名 < db名.dump