baserCMS Documentation

Githubでこのページを編集

Home / 5 / ucmitz / preparation / 開発環境の構築

開発環境の構築

開発は、Docker Desctop で行います。

構築手順

事前準備

Docker Desktop をインストールします。

ucmitz をクローンする

ucmitz をクローンし、dev ブランチに切り替えます。

git clone https://github.com/baserproject/ucmitz.git
git checkout dev

docker-compose をコピーする

cp docker/docker-compose.yml.default docker/docker-compose.yml

※ このファイルは自由に編集可能です。

Docker を起動する

docker ディレクトリに移動してから Docker 起動します。
Docker を起動すると ucmitzの初期化処理(composerによるライブラリのインストール、データベースの初期化、JWT用のキー作成など)が始まります。

初期化に30秒ほどかかりますので、それを待ってからブラウザでアクセスしてください。 /docker/check ファイルが作成されたら、以上で環境構築は終了です。

cd docker
docker-compose up -d

ローカルの ucmitz のディレクトリは、/var/www/shared にマウントされています。

管理画面にログインする

ブラウザで、次のURLにアクセスして表示を確認します。
https://localhost/baser/admin/baser-core/users/login

メールアドレスとパスワードを入力し管理画面にログインします。

アプリケーションの管理画面は、SSLでアクセスしないとエラーとなります。
http でアクセスしたい場合は、.env の ADMIN_SSL を false に設定してください。

管理画面にログインができなくなった場合は、 管理画面にログインができなくなった を確認してください。

 

コンテナへのログイン方法

docker ディレクトリに移動してからログインします。

cd docker
docker exec -it bc5-php /bin/bash

データベース情報

name value
host bc5-db
database basercms
user root
password root

 

ブラウザで画面が正常に表示できない場合

初期化が終わっていないか、うまくいっていない可能性があります。
次のコマンドで Docker のログを確認します。

docker logs bc5-php

「Container setup is complete.」と表示されていれば初期化は完了しています。

「Migration failed.」と表示されている場合は、MySQLの初期化が完了していません。コンテナにログインし、次のコマンドを実行してください。

/var/www/html/bin/cake migrations migrate --plugin BaserCore
/var/www/html/bin/cake migrations seed --plugin BaserCore
/var/www/html/bin/cake plugin assets symlink

 

lsyncd による高速化

Docker Desktop を利用する前提となっていますが、現在(2022/04/11)Macの環境では、
共有フォルダとしてマウントしたフォルダに直接 Apache の DocumentRoot を設定すると処理速度が非常に遅くなるという問題があります。
そのため、別のフォルダにマウントして、lsyncd というサービスで同期することで高速化する仕組みを利用可能としています。
設定は自身で行う必要があります。

設定方法

マウントの設定変更

docker/docker-compose.yml の 26行目あたり

// 下記をコメントアウト
- ../:/var/www/html:delegated
// 下記をコメントイン
# - ../:/var/www/shared:delegated

初期化スクリプトの設定変更

docker/docker-compose.yml の 38行目あたり

// 下記をコメントアウト
command: bash -c "/var/www/html/docker/init.sh && apache2-foreground"
// 下記をコメントイン
# command: bash -c "/var/www/shared/docker/init_lsyncd.sh && /var/www/shared/docker/init.sh && apache2-foreground"

あとは、環境を再構築する を参考に再構築を行います。

共有フォルダのマウント設定

ドキュメントルートである /var/www/html/ ではなく、/var/www/shared/ に共有フォルダをマウントすることにより高速化を図っています。

ファイルの同期

共有フォルダ内のファイルを変更した場合、/var/www/html/ 内に反映させなければ、変更が動作に反映されません。
そのため、lsyncd を利用して /var/www/shared//var/www/html/ を同期します。

/var/www/shared # 共有フォルダとしてマウントするフォルダ
/var/www/html # Apache の DocumentRoot

ファイルの同期がうまくいかない問題

Docker の起動時に lsyncd を立ち上げる仕様となっていますが、ファイルの同期がうまくいかない場合があります。

その場合は、こちらを確認してください。
コンテナにログインしてサービスの起動状況を確認します。

service --status-all

lsyncd の左側に「+」マークが表示されていれば問題ありません。
そうでない場合は、手動で起動します。

service lsyncd start

上記を試してもうまく行かない場合は環境の再構築をお試しください。

 

環境を再構築する

PHPのコンテナを違うコンテナにする場合など、環境を再構築する場合は次の手順を踏みます。

# 初期化完了ファイルを削除
rm ./docker_inited
# dockerフォルダへ移動
cd docker
# docker-compose.yml.default の変更内容を反映する(必要があれば)
cp docker-compose.yml.default docker-compose.yml
# データベースのデータを削除
rm -rf ./volumes
# コンテナを再構築
docker-compose up -d --force-recreate

 

Dockerイメージを取得しなおす

Dockerイメージに更新があった場合に新しいイメージからコンテナを再構築する場合は、事前にローカルに保存されたDockerイメージを削除します。

cd docker
# docker を起動している場合は止める
docker-compose stop
# コンテナを削除する
docker rm bc5-php
# IMAGE ID を確認する
docker images
# イメージ削除する
docker rmi [IMAGE ID]
# その後、環境の再構築を実施する