こちらのサイトではDRUPAL10に関連する記事を掲載しています。
- 環境
- インストール
- 使い方
- 設定ファイル
- スクリプトについて
- UPDATE TOYO DEV SOURCE CODE FROM SAZAE DEPOSITORY
- Manual steps to create local env
- Kusanagi RoD
環境
Windows 11
WSL2
Ubuntu 20.4
Docker
Kusanagi Run on Docker
Drupal9 (latest)
Drush latest
インストール
prepare following scripts/folders
- backup folder
includes files/folders which needed to create docker env - archives folder
includes application files (source code archive files/database sql files) - buildnewdocker.sh file
- buildnewdocker.conf file
- buildnewdocker.ini file
- installdpapp.sh
- installwpapp.sh
- sw.sh
使い方
スクリプト実行形式
項目 | 名前 | 説明 | 備考 |
---|---|---|---|
コマンド名 | buildnewdocker.sh | スクリプト本体 | |
第一引き数 | PROFILE NAME | 設定ファイルに定義したプロファイル名 | 独自で設定する 後述の設定ファイルに従う |
第二引き数 | PROJECT FOLDER | Docker環境が作成されるフォルダ名 | FQDN:プロジェクトフォルダ名.local |
第三引き数 | AUTO-EXECUTION | (オプション) 1: 完了まで止まらない(自動実行) 0: ステップで実行する | 未設定の場合は0 |
./buildnewdocker.sh {PROFILE NAME} {PROJECT FOLDER} {AUTO-EXECUTION OPTION}
Exmple:
./buildnewdocker.sh toyo-dev toyo-dev-payment-test 1
設定ファイル
基本設定
####################################
# 切要な設定はすべてここで行う
# COMMON
####################################
TLD=".local"
ARCHIVES_DIR="archives"
adminuser="admin"
adminpass="adminpass"
adminemail="admin@example.com"
dbname="database"
dbuser="dbuser"
dbpass="dbpassword"
kusanagipass="kusanagipassword"
KUSANAGIPHPSRC="kusanagi-php-php7.4"
FQDN=${TARGET}${TLD}
変数名 | 設定値 | 備考 |
---|---|---|
BASEAPP | lamp | kusanagi設定プロビジョン名 |
LAMPAPP | drupal9 | インストールパッケージ名 |
PROJAPP | インストールアプリ名 | |
COMPILE | y | php再コンパイル実施 |
webserver | –httpd | ウェブサービス名 |
php | kusanagi設定用PHPバージョン | |
RESTOREFROMDOCKERFILE | Dockerバックアップから復元 | |
MAKEDOCKERBACKUP | y | Dockerバックアップ作成 |
APPDEPLOY_SCRIPT | アプリバックアップ復元スクリプト WP用:installdpapp.sh Drupal用:installwpapp.sh |
爆速でWordPress環境を立ち上げる
設定ファイル(プロファイル名:wp)
変数名 | 設定値 | 備考 |
---|---|---|
BASEAPP | wp | kusanagi設定プロビジョン名 |
LAMPAPP | インストールパッケージ名 | |
PROJAPP | インストールアプリ名 | |
COMPILE | n | php再コンパイル実施 |
webserver | –httpd | ウェブサービス名 |
php | kusanagi設定用PHPバージョン | |
RESTOREFROMDOCKERFILE | Dockerバックアップから復元 | |
MAKEDOCKERBACKUP | y | Dockerバックアップ作成 |
APPDEPLOY_SCRIPT | アプリバックアップ復元スクリプト WP用:installdpapp.sh Drupal用:installwpapp.sh |
####################################
if [ $PROFILE = "wp" ];then
####################################
BASEAPP="wp"
LAMPAPP=""
PROJAPP=""
#XDEBUG/GITを追加してイメージを再生成する
COMPILE="n"
webserver="--httpd"
#FOR php8.x
php=""
#BACKUPファイルからリストアする
RESTOREFROMDOCKERFILE="n"
#DOCKERのバックアップファイルを作成する
MAKEDOCKERBACKUP="y"
#スクリプト名を記述する
#スクリプト実行環境にこのファイルが置かれていること
APPDEPLOY_SCRIPT=
fi
デバッグモードでWordPress環境を立ち上げる
設定ファイル (プロファイル名:wpxdbg)
変数名 | 設定値 | 備考 |
---|---|---|
BASEAPP | wp | kusanagi設定プロビジョン名 |
LAMPAPP | インストールパッケージ名 | |
PROJAPP | インストールアプリ名 | |
COMPILE | y | php再コンパイル実施 |
webserver | –httpd | ウェブサービス名 |
php | kusanagi設定用PHPバージョン | |
RESTOREFROMDOCKERFILE | n | Dockerバックアップから復元 |
MAKEDOCKERBACKUP | y | Dockerバックアップ作成 |
APPDEPLOY_SCRIPT | アプリバックアップ復元スクリプト WP用:installdpapp.sh Drupal用:installwpapp.sh |
####################################
if [ $PROFILE = "wpxdbg" ];then
####################################
BASEAPP="wp"
LAMPAPP=""
PROJAPP=""
#XDEBUG/GITを追加してイメージを再生成する
COMPILE="y"
webserver="--httpd"
#FOR php8.x
php=""
#BACKUPファイルからリストアする
RESTOREFROMDOCKERFILE="n"
#DOCKERのバックアップファイルを作成する
MAKEDOCKERBACKUP="y"
#スクリプト名を記述する
#スクリプト実行環境にこのファイルが置かれていること
APPDEPLOY_SCRIPT=
fi
爆速でLAMP環境を立ち上げる
設定ファイル (プロファイル名:lamp)
変数名 | 設定値 | 備考 |
---|---|---|
BASEAPP | lamp | kusanagi設定プロビジョン名 |
LAMPAPP | インストールパッケージ名 | |
PROJAPP | インストールアプリ名 | |
COMPILE | y | php再コンパイル実施 |
webserver | –httpd | ウェブサービス名 |
php | kusanagi設定用PHPバージョン | |
RESTOREFROMDOCKERFILE | n | Dockerバックアップから復元 |
MAKEDOCKERBACKUP | y | Dockerバックアップ作成 |
APPDEPLOY_SCRIPT | アプリバックアップ復元スクリプト WP用:installdpapp.sh Drupal用:installwpapp.sh |
####################################
# LAMP環境設定
####################################
if [ $PROFILE = "lamp" ];then
####################################
BASEAPP="lamp"
LAMPAPP=""
PROJAPP=""
#XDEBUG/GITを追加してイメージを再生成する
COMPILE="y"
webserver="--httpd"
#FOR php8.x
php=""
#BACKUPファイルからリストアする
RESTOREFROMDOCKERFILE="n"
#DOCKERのバックアップファイルを作成する
MAKEDOCKERBACKUP="y"
#スクリプト名を記述する
#スクリプト実行環境にこのファイルが置かれていること
APPDEPLOY_SCRIPT=
fi
LAMP環境に最新のDrual9をインストールする
設定ファイル (プロファイル名:drupal9)
変数名 | 設定内容 | 初期値 | 備考 |
---|---|---|---|
TLD | トップレベルドメイン | .local | |
ARCHIVES_DIR | WPなたはDrupalデータパス | archives | |
adminuser | WORDPRESSのログインユーザ名 | admin | |
adminpass | WORDPRESSのログインパスワード名 | adminpass | |
dbname | データベース名 | database | |
dbuser | データベースユーザ名 | dbuser | |
dbpass | データベースパスワード名 | dbpassword | |
kusanagipass | KUSANAGI パスワード名 | kusanagipassword | |
KUSANAGIPHPSRC | KusanagiRoDのphpソースコードパス | kusanagi-php-php7.4 | ソースコードはprime-strtegy Githubから取得済み https://github.com/prime-strategy/kusanagi-php/tree/php7.4 ※最新はphp8.1 |
FQDN | アクセスドメイン名 | ターゲット名+TLD |
####################################
# DRUPAL9環境設定
####################################
if [ $PROFILE = "drupal9" ];then
####################################
BASEAPP="lamp"
LAMPAPP="drupal9"
PROJAPP=""
#XDEBUG/GITを追加してイメージを再生成する
COMPILE="y"
webserver="--httpd"
#FOR php8.x
php=""
#BACKUPファイルからリストアする
RESTOREFROMDOCKERFILE="n"
#DOCKERのバックアップファイルを作成する
MAKEDOCKERBACKUP="y"
#スクリプト名を記述する
#スクリプト実行環境にこのファイルが置かれていること
APPDEPLOY_SCRIPT=
fi
Dockerバックアップから爆速でWP環境+アプリを立ち上げる
設定ファイル (プロファイル名:restore-wp)
変数名 | 設定値 | 備考 |
---|---|---|
BASEAPP | wp | kusanagi設定プロビジョン名 |
LAMPAPP | インストールパッケージ名 | |
PROJAPP | インストールアプリ名 | |
COMPILE | n | php再コンパイル実施 |
webserver | –httpd | ウェブサービス名 |
php | kusanagi設定用PHPバージョン | |
RESTOREFROMDOCKERFILE | y | Dockerバックアップから復元 |
MAKEDOCKERBACKUP | Dockerバックアップ作成 | |
ARCHIVE_VOLUME_PHP | VOL_${TARGET}_php.tar | |
ARCHIVE_VOLUME_DB | VOL_${TARGET}_db.tar | |
APPDEPLOY_SCRIPT | アプリバックアップ復元スクリプト WP用:installdpapp.sh Drupal用:installwpapp.sh |
####################################
if [ $PROFILE = "restore-wp" ];then
####################################
BASEAPP="wp"
LAMPAPP=""
PROJAPP=""
#XDEBUG/GITを追加してイメージを再生成する
COMPILE="n"
webserver="--httpd"
#FOR php8.x
php=""
#BACKUPファイルからリストアする
RESTOREFROMDOCKERFILE="y"
ARCHIVE_VOLUME_PHP="VOL_${TARGET}_php.tar"
ARCHIVE_VOLUME_DB="VOL_${TARGET}_db.tar"
#DOCKERのバックアップファイルを作成する
MAKEDOCKERBACKUP="n"
#スクリプト名を記述する
#スクリプト実行環境にこのファイルが置かれていること
APPDEPLOY_SCRIPT=
fi
DockerバックアップからデバッグモードでWP環境+アプリを立ち上げる
設定ファイル (プロファイル名:restore-wpxdb)
変数名 | 設定値 | 備考 |
---|---|---|
BASEAPP | wp | kusanagi設定プロビジョン名 |
LAMPAPP | インストールパッケージ名 | |
PROJAPP | インストールアプリ名 | |
COMPILE | y | php再コンパイル実施 |
webserver | –httpd | ウェブサービス名 |
php | kusanagi設定用PHPバージョン | |
RESTOREFROMDOCKERFILE | y | Dockerバックアップから復元 |
ARCHIVE_VOLUME_PHP | VOL_${TARGET}_php.tar | |
ARCHIVE_VOLUME_DB | VOL_${TARGET}_db.tar | |
MAKEDOCKERBACKUP | n | Dockerバックアップ作成 |
APPDEPLOY_SCRIPT | アプリバックアップ復元スクリプト WP用:installdpapp.sh Drupal用:installwpapp.sh |
####################################
if [ $PROFILE = "restore-wpxdbg" ];then
####################################
BASEAPP="wp"
#LAMPAPP=""
LAMPAPP=""
PROJAPP=""
#XDEBUG/GITを追加してイメージを再生成する
COMPILE="y"
webserver="--httpd"
#FOR php8.x
php=""
#BACKUPファイルからリストアする
RESTOREFROMDOCKERFILE="y"
ARCHIVE_VOLUME_PHP="VOL_${TARGET}_php.tar"
ARCHIVE_VOLUME_DB="VOL_${TARGET}_db.tar"
#DOCKERのバックアップファイルを作成する
MAKEDOCKERBACKUP="n"
#スクリプト名を記述する
#スクリプト実行環境にこのファイルが置かれていること
APPDEPLOY_SCRIPT=
fi
DockerバックアップからデバッグモードでDrupal9環境+アプリを立ち上げる
設定ファイル (プロファイル名:restore-drupal9)
変数名 | 設定値 | 備考 |
---|---|---|
BASEAPP | lamp | kusanagi設定プロビジョン名 |
LAMPAPP | drupal9 | インストールパッケージ名 |
PROJAPP | インストールアプリ名 | |
COMPILE | y | php再コンパイル実施 |
webserver | –httpd | ウェブサービス名 |
php | –php74 | kusanagi設定用PHPバージョン |
RESTOREFROMDOCKERFILE | Dockerバックアップから復元 | |
ARCHIVE_VOLUME_PHP | VOL_${TARGET}_php.tar | |
ARCHIVE_VOLUME_DB | VOL_${TARGET}_db.tar | |
MAKEDOCKERBACKUP | n | Dockerバックアップ作成 |
APPDEPLOY_SCRIPT | アプリバックアップ復元スクリプト WP用:installdpapp.sh Drupal用:installwpapp.sh |
####################################
# DRUPAL9バックアップからのリストア
####################################
if [ $PROFILE = "restore-drupal9" ];then
####################################
BASEAPP="lamp"
#LAMPAPP=""
LAMPAPP="drupal9"
PROJAPP=""
#XDEBUG/GITを追加してイメージを再生成する
COMPILE="y"
webserver="--httpd"
#FOR php7.4
php="--php74"
#BACKUPファイルからリストアする
RESTOREFROMDOCKERFILE="y"
ARCHIVE_VOLUME_PHP="VOL_${TARGET}_php.tar"
ARCHIVE_VOLUME_DB="VOL_${TARGET}_db.tar"
#DOCKERのバックアップファイルを作成する
MAKEDOCKERBACKUP="n"
#スクリプト名を記述する
#スクリプト実行環境にこのファイルが置かれていること
APPDEPLOY_SCRIPT=
fi
スクリプトについて
バリデーションファイル
設定ファイルに設定を追加した場合は、プロファイル名をこのファイルに追加しておく
#PROFILEに定義済みデータ
array=( \
'drupal9' \
'wp' \
'wpxdbg' \
'lamp' \
'restore-wp' \
'restore-wpxdbg' \
'restore-drupal9' \
)
スクリプトファイル説明
引き数のバリデーションチェックおよび引き数を変数に設定する
####################################
#共通で使用する情報を定義する
source /home/matsubara/buildnewdocker.ini
####################################
############################################
## 配列に対象文字列が存在するか確認する
############################################
inarray() {
local i
for i in ${array[@]}; do
if [[ ${i} = ${1} ]]; then
return 0
fi
done
return 1
}
#####################################################################################
## プロファイルに設定された環境を構築する
## 【コマンド書式】"
## buildnewdocker.sh 第一引数(必須) 第二引数(必須) 第三引数(オプション)"
## 【第一引数】(必須) buildnewdocker.confで定義したプロファイル名*を指定"
## 【第二引数】(必須) 新しく作成する仮想環境のプロビジョン名(フォルダ名)を指定"
## 【第三引数】(オプション) ステップごとに確認メッセージ表示の有無(0:STEP、1:自動) "
#####################################################################################
if inarray "$1";then
echo "profile check ok"
else
echo "profile check ng"
fi
echo count=$#
if [ $# -eq 1 ] && [ "$1" = "allstop" ];then
echo "現在起動中のコンテナをすべて停止する"
docker stop $(docker ps -q)
echo "完了しました"
exit 0
elif [ $# -eq 2 ] && [ "$1" = "sw" ];then
if [ ! -d ./"$2" ];then
echo "対象のプロビジョンが存在しません"
exit 1
fi
echo "現在起動中のコンテナをすべて停止する"
docker stop $(docker ps -q)
cd /home/matsubara/$2
kusanagi-docker start
cd /home/matsubara
echo "完了しました"
exit 0
elif [ $# -eq 2 ] && inarray "$1";then
PROFILE=$1
TARGET=$2
autoexec=0
elif [ $# -eq 3 ] && inarray "$1";then
PROFILE=$1
TARGET=$2
autoexec=$3
else
echo "引数を確認してください"
echo "【コマンド書式】"
echo "buildnewdocker.sh 第一引数(必須) 第二引数(必須) 第三引数(オプション)"
echo "【第一引数】(必須) buildnewdocker.confで定義したプロファイル名*を指定"
echo "【第二引数】(必須) 新しく作成する仮想環境のプロビジョン名(フォルダ名)を指定"
echo "【第三引数】(オプション) ステップごとに確認メッセージ表示の有無(0:STEP、1:自動) "
IFS=','
echo "*有効なプロファイル名: ${array[*]} "
exit 1
#autoexec=0
fi
####################################
先に設定済みの設定ファイルをここで読み込む。確認のため設定内容を表示する。
####################################
#上記設定は環境設定ファイルに一元化した
source ./buildnewdocker.conf
####################################
## ---------------------------------
echo "プロビジョニング:${TARGET} を作成します。すでにある場合は削除されますのでご注意ください"
echo "PROFILEは、${PROFILE}"
echo "TARGETは、${TARGET}"
echo "BASEAPPは、${BASEAPP}です。"
if [ "$BASEAPP" = "lamp" ];then echo "LAMPAPPは、${LAMPAPP}"; fi
echo "PROJAPPは、${PROJAPP}"
echo "FQDNは、${FQDN}です。"
echo "autoexec=${autoexec}"
echo "KUSANAGIPHPSRC=${KUSANAGIPHPSRC}"
echo "/windows/system32/drivers/etc/hostsで上記FDQNが127.0.0.1に紐付けられていることを確認ください"
if [ $autoexec -eq 1 ];then echo "完了するまで止まりません"; fi
read -p "Press [Enter] key to move on to the next."
コンテナを停止、対象フォルダを削除する
echo "現在起動中のコンテナをすべて停止する"
docker stop $(docker ps -q)
#削除
echo "【KusanagiRoD】対象のプロビジョニングが既に存在する場合は削除する"
chmod 777 /home/matsubara/${TARGET}/contents/ -R > /dev/null
kusanagi-docker remove ${TARGET}
Kusanagiコマンドで新規プロビジョニングを作成する
## ---------------------------------
echo "【KusanagiRoD】プロビジョニングを作成する"
if [ $autoexec -eq 0 ];then read -p "Press [Enter] key to move on to the next."; fi
if [ $BASEAPP = "wp" ];then
echo "【KusanagiRoD】WordPress環境生成"
#echo "kusanagi-docker provision --wp ${webserver} --wplang=ja --admin-user=sinceretechnology --admin-pass=wordpress --admin-email=admin@sinceretechnology.com.au --wp-title=WordPress --kusanagi-pass=${kusanagipass} --dbname=wordpress --dbuser=wordpress --dbpass=wordpress --http-port=80 --tls-port=443 --fqdn ${TARGET}${TLD} ${TARGET}"
kusanagi-docker provision --wp ${webserver} --wplang=ja --admin-user=${adminuser} --admin-pass=${adminpass} --admin-email=${adminemail} --wp-title=WordPress --kusanagi-pass=${kusanagipass} --dbname=${dbname} --dbuser=${dbuser} --dbpass=${dbpass} --http-port=80 --tls-port=443 --fqdn ${TARGET}${TLD} ${TARGET}
elif [ $BASEAPP = "drupal8" ];then
echo "【KusanagiRoD】Drupal8環境構築"
kusanagi-docker provision --drupal8 ${webserver} ${php} --kusanagi-pass=${kusanagipass} --dbname=${dbname} --dbuser=${dbuser} --dbpass=${dbpass} --http-port=80 --tls-port=443 --fqdn ${TARGET}${TLD} ${TARGET}
elif [ $BASEAPP = "lamp" ];then
echo "【KusanagiRoD】LAMP環境構築"
kusanagi-docker provision --lamp ${webserver} ${php} --kusanagi-pass=${kusanagipass} --dbname=${dbname} --dbuser=${dbuser} --dbpass=${dbpass} --http-port=80 --tls-port=443 --fqdn ${TARGET}${TLD} ${TARGET}
else
echo "Application type is not defined!!"
echo "Terminate abnormally!!!!!"
exit 1
fi
## ---------------------------------
echo "【KusanagiRoD】環境構築完了しました"
echo "http://${TARGET}${TLD} にアクセスして確認してください"
if [ $autoexec -eq 0 ];then read -p "Press [Enter] key to move on to the next."; fi
コンパイルがYの場合は、Docker設定ファイルを以下のように書き換えてphpサービス用ソースコードをコンパイルする設定にする
- docker-compose.ymlのphpサービス部分の設定を書き換え、イメージ読み込みからDockerfileによりコンパイルするように変更する
- phpのソースコードとDockerfileを格納したフォルダをプロジェクトフォルダ配下に転送する
docker-compose.yml
抜粋
php:
container_name: toyo-dev_php
#image: primestrategy/kusanagi-php:7.4.28-r5
build:
context: ./kusanagi-php-php7.4
dockerfile: Dockerfile
if [ $COMPILE = "y" ];then
echo "【PHPDocker環境】phpコンテナに開発用サービスをを追加する"
echo "コンパイル用ソース一式を${KUSANAGIPHPSRC}に取得・コンパイルしてイメージを再構築する"
if [ $autoexec -eq 0 ];then read -p "Press [Enter] key to move on to the next."; fi
## ---------------------------------
cd /home/matsubara/backup
mkdir /home/matsubara/${TARGET}/contents/DocumentRoot/temp
echo "【PHPDocker環境】phpコンテナ用Dockerfileを取得する"
cp -rf /home/matsubara/backup/${KUSANAGIPHPSRC} /home/matsubara/${TARGET}
echo "【PHPDocker環境】docker-compose.ymlの設定を変更する"
cp /home/matsubara/${TARGET}/docker-compose.yml /home/matsubara/${TARGET}/docker-compose.yml.bak
#cp /home/matsubara/backup/docker-compose.yml.template /home/matsubara/${TARGET}/docker-compose.yml
#PHPにBUILDを追加する
sed -i "/image: primestrategy\/kusanagi-php/a \ build:\n context: ./${KUSANAGIPHPSRC}\n dockerfile: Dockerfile" /home/matsubara/${TARGET}/docker-compose.yml #del > /home/matsubara/${TARGET}/docker-compose.yml.temp
#PHPのIMAGEをコメントアウトする
sed -i "s/image: primestrategy\/kusanagi-php/#image: primestrategy\/kusanagi-php/" /home/matsubara/${TARGET}/docker-compose.yml #del > /home/matsubara/${TARGET}/docker-compose.yml
echo "Complete!"
## ---------------------------------
fi
コンパイルがYの場合は、起動中のコンテナを削除して、先に書き換えたDocker設定ファイルとphpサービス用ソースコードで再コンパイルを行う。コンパイルしない場合はコンテナの再起動を行う。
docker-compose down
docker-compose build
docker-compose up -d
#<<COMMENTOUT
# コンパイルありまたはスクリプトを実行した場合はコンテナの再起動を行う
cd /home/matsubara/${TARGET}
if [ "$COMPILE" = "y" ];then
## ---------------------------------
echo "現在のディレクトリ: /home/matsubara/${TARGET}"
echo "===== コンテナを再構築する ====="
if [ $autoexec -eq 0 ];then read -p "Press [Enter] key to move on to the next."; fi
echo " 起動中コンテナを削除する(1/4)"
docker-compose down
echo " コンテナをコンパイルする(2/4)"
docker-compose build
echo " コンテナを構築・起動する(3/4)"
docker-compose up -d
#echo " コンテナデータを取得する(4/4)"
# kusanagi-docker config pull
else
echo " すべてのコンテナを再起動する"
kusanagi-docker restart
fi
echo "Complete!"
## ---------------------------------
#COMMENTOUT
DockerコマンドとcomposerコマンドでDrupal9の設定環境を下記コマンドでコンテナ内に直接構築する
composer create-project drupal/recommended-project DRUPALプロジェクトフォルダ名
#########################################
## ここから Drupal9用の処理を記述する ##
#########################################
## ---------------------------------
if [ $BASEAPP = "lamp" ] && [ $LAMPAPP = "drupal9" ];then
## ---------------------------------
echo "【PHPDocker環境】Drupal9.3をインストールする"
if [ $autoexec -eq 0 ];then read -p "Press [Enter] key to move on to the next."; fi
# Drupalプロジェクト作成のためDocumentRootフォルダをいったん削除する
docker exec -it --user root ${TARGET}_php \
/bin/sh -c \
"cd /home/kusanagi/${TARGET}/ \
&& rm -rf ./DocumentRoot"
# DrupalをComposerでインストールする
docker exec -it --user root ${TARGET}_php \
/bin/sh -c \
"cd /home/kusanagi/${TARGET}/ \
&& composer create-project drupal/recommended-project \
./DocumentRoot"
## ---------------------------------
DRUPALディレクトリのパーミッションの変更とメディアディレクトリ作成を行う
###########################################################
## これがないとCSSが適用されない
## 翻訳ファイル用フォルダや設定ファイルは自動生成されない?
###########################################################
## ---------------------------------
docker exec -it --user root ${TARGET}_php \
/bin/sh -c \
"cd /home/kusanagi/${TARGET}/ \
&& mkdir ./DocumentRoot/web/sites/default/files "
docker exec -it --user root ${TARGET}_php \
/bin/sh -c \
"cd /home/kusanagi/${TARGET}/ \
&& mkdir ./DocumentRoot/web/sites/default/files/translations "
docker exec -it --user root ${TARGET}_php \
/bin/sh -c \
"cd /home/kusanagi/${TARGET}/DocumentRoot/web/sites/default/ \
&& cp ./default.settings.php \
./settings.php "
docker exec -it --user root ${TARGET}_php \
/bin/sh -c \
"cd /home/kusanagi/${TARGET} \
&& chmod 777 ./DocumentRoot -R"
## ---------------------------------
DockerコマンドとcomposerコマンドでDrushおよびDRUSH LAUNCHERの設定環境をコンテナ内に直接構築する(DOCKER内で下記のコマンドを実行する)
composer require drush/drush
## ---------------------------------
echo "【PHPDocker環境】DRUSHをインストールする"
if [ $autoexec -eq 0 ];then read -p "Press [Enter] key to move on to the next."; fi
# Drush latest version
# https://www.drupal.org/docs/develop/using-composer/using-composer-to-install-drupal-and-manage-dependencies
docker exec -it --user root ${TARGET}_php \
/bin/sh -c \
"cd /home/kusanagi/${TARGET}/DocumentRoot \
&& composer require drush/drush"
## ---------------------------------
## ---------------------------------
echo "【PHPDocker環境】DRUSH LAUNCHERをインストールする"
#DRUSHを起動するためのスクリプト
docker cp /home/matsubara/backup/drush.phar \
${TARGET}_php:/home/kusanagi/${TARGET}/DocumentRoot/drush.phar
docker exec -it --user root ${TARGET}_php \
chmod +x /home/kusanagi/${TARGET}/DocumentRoot/drush
## ---------------------------------
kusanagiRoDの設定ファイル .kusanagi に設定されているドキュメントルートを変更する
####################################
## NOTICE!!!!!!
## DRUSH RCをするとエラーになる件
## PHPのMEMORY_LIMITを512MGにする
## https://support-acquia.force.com/s/article/360005311613-Increasing-the-memory-limit-for-Drush
##
## Add blow code to settings.php file.
## -------------------
## if (PHP_SAPI === 'cli') {
## ini_set('memory_limit', '512M');
## }
## -------------------
####################################
## ---------------------------------
echo "【KusanagiRoD】ドキュメントルートを変更する"
# .kusanagiファイルのドキュメントルート設定を変更する。
# 再起動後に反映される
cp /home/matsubara/${TARGET}/.kusanagi \
/home/matsubara/${TARGET}/.kusanagi.bak
sed 's/\/DocumentRoot/\/DocumentRoot\/web/' \
/home/matsubara/${TARGET}/.kusanagi.bak \
> /home/matsubara/${TARGET}/.kusanagi.temp
sed 's/ROOT_DIR=DocumentRoot/ROOT_DIR=web/' \
/home/matsubara/${TARGET}/.kusanagi.temp \
> /home/matsubara/${TARGET}/.kusanagi
fi
ドキュメントルートにツールをインストールする
###########################################################
## ドキュメントルートにデータベースツール他ファイルを転送
###########################################################
## ---------------------------------
if [ $BASEAPP = "lamp" ] && [ $LAMPAPP = "drupal9" ];then
DOCROOT=DocumentRoot/web
else
DOCROOT=DocumentRoot
fi
echo "ドキュメントルートにデータベースツール他ファイルを転送する"
docker cp /home/matsubara/backup/phpinfo.php \
${TARGET}_php:/home/kusanagi/${TARGET}/${DOCROOT}/phpinfo.php
docker cp /home/matsubara/backup/adminer.php \
${TARGET}_php:/home/kusanagi/${TARGET}/${DOCROOT}/adminer.php
## ---------------------------------
Drupal9インストールをDRUSHの下記コマンドで行う
php drush.phar site:install \
--db-url=mysql://DBユーザ:DBパスワード@ホスト名:ポート番号/データベース名 \
--account-name=ADMINユーザ \
--account-pass=ADMINパスワード
###########################################################
## Drupalサイト構築をDrushから実行する
###########################################################
## ---------------------------------
#https://drushcommands.com/drush-9x/site/site:install/
#https://www.white-root.com/drush-commands/site_install
if [ $BASEAPP = "lamp" ] && [ $LAMPAPP = "drupal9" ];then
echo "Drupalサイト構築をDrushから実行する(通常GUIで行う設定が不要)"
if [ $autoexec -eq 0 ];then read -p "Press [Enter] key to move on to the next."; fi
#INSTALL DRUPAL9
docker exec -it --user root ${TARGET}_php \
/bin/sh -c \
"cd /home/kusanagi/${TARGET}/DocumentRoot \
&& php drush.phar site:install \
--db-url=mysql://${dbuser}:${dbpass}@localhost:3306/${dbname} \
--account-name=${adminuser} \
--account-pass=${adminpass} "
## ---------------------------------
ローカル環境で有効なデバックモードの設定を行う
###########################################################
## DEBUGモードを設定する
###########################################################
## ---------------------------------
#SET DEBUG MODE
docker exec -it --user root ${TARGET}_php \
/bin/sh -c \
"cd /home/kusanagi/${TARGET}/DocumentRoot/web/sites \
&& cp ./example.settings.local.php ./default/settings.local.php \
&& sed -i -e \"$ a if (file_exists(__DIR__ . '/settings.local.php')) {\n \
include __DIR__ . '/settings.local.php';\n}\n\" \
./default/settings.php"
#COPY CONFIG FILE(settings.local.php) FOR DEBUG
docker cp /home/matsubara/backup/settings.local.php \
${TARGET}_php:/home/kusanagi/toyo-dev/DocumentRoot/web/sites/default/settings.local.php
#COPY CONFIG FILE(development.services.yml) FOR DEBUG
docker cp /home/matsubara/backup/development.services.yml \
${TARGET}_php:/home/kusanagi/toyo-dev/DocumentRoot/web/sites/development.services.yml
fi
## ---------------------------------
コンパイルがYの場合は、ここでコンテナに再構築を行う(コンパイルは実施済みのためしない)
コンパイルしない場合はkusanagiコマンドでコンテナの再起動のみ行う。
## ---------------------------------
# コンパイルありまたはスクリプトを実行した場合はコンテナの再起動を行う
cd /home/matsubara/${TARGET}
if [ "$COMPILE" = "y" ];then
echo "現在のディレクトリ: /home/matsubara/${TARGET}"
echo "===== コンテナを再構築する ====="
if [ $autoexec -eq 0 ];then read -p "Press [Enter] key to move on to the next."; fi
echo " 起動中コンテナを削除する(1/4)"
docker-compose down
#echo " コンテナをコンパイルする(2/4)"
# docker-compose build
echo " コンテナを構築・起動する(3/4)"
docker-compose up -d
#echo " コンテナデータを取得する(4/4)"
# kusanagi-docker config pull
else
echo " すべてのコンテナを再起動する"
kusanagi-docker restart
fi
echo "Complete!"
## ---------------------------------
Drupal9インストールの場合はキャッシュをクリアする
php drush.phar cr
if [ $BASEAPP = "lamp" ] && [ $LAMPAPP = "drupal9" ];then
echo "すべてのキャッシュをクリアする"
docker exec -it --user root ${TARGET}_php \
/bin/sh -c \
"cd /home/kusanagi/${TARGET}/DocumentRoot \
&& php drush.phar cr"
fi
## ---------------------------------
アプリのバックアップからインストールをする場合はここで行う
※設定ファイルに指定された別途作成したスクリプトを実行することができる
#########################################
## ここからデプロイしたいアプリがあれば
## サブスクリプトを呼び出して実行する
#########################################
#
## ---------------------------------
if [ -n "$APPDEPLOY_SCRIPT" ] \
&& [ -e "/home/matsubara/$APPDEPLOY_SCRIPT" ]; then
#スクリプトの実行
echo "プロファイルに指定されたスクリプトを実行する"
echo "【スクリプト】source /home/matsubara/${APPDEPLOY_SCRIPT} ${TARGET} ${autoexec}"
source /home/matsubara/${APPDEPLOY_SCRIPT} ${PROFILE} ${TARGET} ${autoexec}
elif [ -n "$APPDEPLOY_SCRIPT" ] \
&& [ ! -e "/home/matsubara/$APPDEPLOY_SCRIPT" ]; then
echo "エラーにより処理を中断しました"
echo "アプリデプロイ用スクリプトが存在しません!!"
echo "アプリのデプロイが必要な場合は手動でスクリプトを起動してください"
exit 1
fi
## ---------------------------------
Dockerバックアップから復元する設定の場合はここで行う
以下のDOCKERコマンドを使用してDBとPHPそれぞれのDOCKER内データを復元する
docker run --rm --volumes-from {対象コンテナ名} -v
{ホスト側アーカイブフォルダパス}:/backup busybox tar xvf /backup/{アーカイブファイル名}
## ---------------------------------
if [ ${RESTOREFROMDOCKERFILE} = "y" ];then
echo "バックアップからコンテナイメージとボリューム(DB含むデータ)をリストアする"
if [ $autoexec -eq 0 ];then read -p "Press [Enter] key to move on to the next."; fi
#Volumeバックアップを取得する
echo "phpコンテナをリストアする"
docker run --rm --volumes-from ${TARGET}_php -v /home/matsubara/${ARCHIVES_DIR}:/backup busybox tar xvf /backup/${ARCHIVE_VOLUME_PHP}
echo "dbコンテナをリストアする"
docker run --rm --volumes-from ${TARGET}_db -v /home/matsubara/${ARCHIVES_DIR}:/backup busybox tar xvf /backup/${ARCHIVE_VOLUME_DB}
fi
## ---------------------------------
## ---------------------------------
cd /home/matsubara/${TARGET}
echo "現在のディレクトリ: /home/matsubara/${TARGET}"
echo " すべてのコンテナを再起動する"
kusanagi-docker restart
## ---------------------------------
DockerイメージとDocker内データのバックアップをする設定の場合はここで行う
以下のDOCKERコマンドを使用してDBとPHPそれぞれのDOCKER内データをバックアップする
docker run --rm --volumes-from {対象コンテナ名} -v {ホスト側アーカイブフォルダパス}:/backup busybox tar cf /backup/{バックアップファイル名} {コンテナ内バックアップ対象フォルダ}
## ---------------------------------
if [ ${MAKEDOCKERBACKUP} = "y" ];then
echo "再構築したコンテナイメージとボリューム(DB含むデータ)のバックアップを取得する"
if [ $autoexec -eq 0 ];then read -p "Press [Enter] key to move on to the next."; fi
#BUILDで作成したIMAGEのバックアップ
docker save ${TARGET}_php:latest > /home/matsubara/${TARGET}/IMG_${TARGET}_php.tar
#Volumeバックアップを取得する
docker run --rm --volumes-from ${TARGET}_php -v /home/matsubara/${TARGET}:/backup busybox tar cf /backup/VOL_${TARGET}_php.tar /home/kusanagi
docker run --rm --volumes-from ${TARGET}_db -v /home/matsubara/${TARGET}:/backup busybox tar cf /backup/VOL_${TARGET}_db.tar /var/lib/mysql
fi
KusanagiのpullコマンドでDocker内データを共有フォルダに取得する
kusanagi-docker config pull
## ---------------------------------
cd /home/matsubara/${TARGET}
echo "コンテナ内データをcontentsフォルダに取得する"
kusanagi-docker config pull
## ---------------------------------
echo "complete successfully!!!!!!!!"
exit 0
以上
スクリプト全体
ホームディレクトリのパス名など修正が必要な箇所は多々ありますが、参考までに公開します。ぜひ参考にしてください。
Maintennce
UPDATE TOYO DEV SOURCE CODE FROM SAZAE DEPOSITORY
- Download archive source code (zip) from bitbucet.
- Created work directory on WSL (Ubuntu 20.4)
- Unzip files
- Rename folder name:
run this command: movexxx-lms-xxxxxx xxx-lms-devdemo
- Update composer.lock in archive folder as below:
(before) https://github.com/fronteed/icheck/archive/1.0.2.zip
(after) https://github.com/fronteed/icheck/archive/1.0.1.zip
Run this command:sed -i "s/https:\/\/github.com\/fronteed\/icheck\/archive\/1.0.2.zip/https:\/\/github.com\/fronteed\/icheck\/archive\/1.0.1.zip/" ./composer.lock
- Make zip files:
Run this command:zip -r xxx-lms-devdemo-ddmmyyyy xxx-lms-devdemo/
- Move this file to archives folder
- Update buildnewdocker.conf:
updateSOURCECODE_ZIPFILExxx-lms-devdemo-ddmmyyyy.zip
in toyo-dev section
REFERENCE
Manual steps to create local env
- Create LAMP env
- Install Drupal
- Install Drush command
- Download source code from bitbucet.
- Expand under documentroot (actually document root is web folder?)
- execute “composer install”* under the folder where composer file exists
*This command automatically install drupal modules which custom module need - import sql data into mysql database with mysql/drush command
Kusanagi RoD
この記事またはDrupalに関するご質問がございましたら、お気軽にお問い合わせください。