Docker Compose を使用して構築された基本的な LAMP スタック環境。これは次の内容で構成されます。
現時点では、いくつかの異なる PHP バージョンがあります。必要に応じて適切な php バージョンを使用します。
docker compose up -d
実行します。 git clone https://github.com/sprintcube/docker-compose-lamp.git
cd docker-compose-lamp/
cp sample.env .env
// modify sample.env as needed
docker compose up -d
// visit localhost
LAMP スタックの準備が完了しました。 http://localhost
経由でアクセスできます。
この Docker スタックはローカル開発用にビルドされており、運用環境での使用を目的としたものではありません。
このパッケージにはデフォルトの構成オプションが付属しています。ルート ディレクトリに.env
ファイルを作成することで、これらを変更できます。これを簡単にするには、 sample.env
ファイルの内容をコピーし、必要に応じて環境変数の値を更新するだけです。
以下の構成変数が利用可能であり、独自の.env
ファイルに上書きすることでカスタマイズできます。
PHPVERSION使用する PHP バージョンを指定するために使用されます。デフォルトは常に最新の PHP バージョンになります。
PHP_INI要件を満たすようにカスタムphp.ini
変更を定義します。
DOCUMENT_ROOT
Apacheサーバーのドキュメントルートです。このデフォルト値は./www
です。すべてのサイトがここに移動し、自動的に同期されます。
APACHE_DOCUMENT_ROOT
Apache 構成ファイルの値。このデフォルト値は /var/www/html です。
VHOSTS_DIR
これは仮想ホスト用です。このデフォルト値は./config/vhosts
です。仮想ホストの conf ファイルをここに配置できます。
仮想ホストごとにシステムの
hosts
ファイルにエントリを必ず追加してください。
APACHE_LOG_DIR
これは、Apache ログを保存するために使用されます。このデフォルト値は./logs/apache2
です。
Apple Silicon ユーザーの場合: データベースとして Mariadb を選択してください。 Oracle は arm アーキテクチャ用の SQL コンテナを構築していません
データベース
使用する MySQL または MariaDB のバージョンを定義します。
MYSQL_INITDB_DIR
コンテナーが初めて起動されると、このディレクトリ内の拡張子.sh
、 .sql
、 .sql.gz
、および.sql.xz
を持つファイルがアルファベット順に実行されます。ファイル実行権限のない.sh
ファイルは、実行されずに取得されます。このデフォルト値は./config/initdb
です。
MYSQL_DATA_DIR
これは MySQL データ ディレクトリです。このデフォルト値は./data/mysql
です。すべての MySQL データ ファイルはここに保存されます。
MYSQL_LOG_DIR
これは、Apache ログを保存するために使用されます。このデフォルト値は./logs/mysql
です。
Apache はポート 80 で実行するように構成されているため、 http://localhost
経由でアクセスできます。
デフォルトでは、次のモジュールが有効になっています。
さらに多くのモジュールを有効にしたい場合は、
./bin/phpX/Dockerfile
を更新するだけです。 PR を生成することもできます。一般的な目的に適していると思われる場合はマージします。docker compose build
実行して docker イメージを再構築し、docker コンテナを再起動する必要があります。
docker compose exec
コマンドを使用して Web サーバーに接続し、Web サーバー上でさまざまな操作を実行できます。以下のコマンドを使用して、ssh 経由でコンテナにログインします。
docker compose exec webserver bash
インストールされている php のバージョンは、 .env
ファイルによって異なります。
デフォルトでは以下の拡張機能がインストールされています。 PHP バージョン 7.xx 未満では異なる場合があります
さらに拡張機能をインストールしたい場合は、
./bin/webserver/Dockerfile
を更新するだけです。 PR を生成することもできます。それが一般的な目的に適していると思われる場合は、マージします。docker compose build
実行して docker イメージを再構築し、docker コンテナを再起動する必要があります。
phpMyAdmin はポート 8080 で実行されるように構成されています。次のデフォルトの認証情報を使用します。
http://ローカルホスト:8080/
ユーザー名: ルート
パスワード: 虎
Xdebug はデフォルトでインストールされ、そのバージョンは".env"
ファイルで選択された PHP バージョンによって異なります。
Xdebug バージョン:
PHP <= 7.3: Xdebug 2.XX
PHP >= 7.4: Xdebug 3.XX
Xdebug を使用するには、選択したバージョンの PHP に応じて./config/php/php.ini
ファイルの設定を有効にする必要があります。
例:
# Xdebug 2
#xdebug.remote_enable=1
#xdebug.remote_autostart=1
#xdebug.remote_connect_back=1
#xdebug.remote_host = host.docker.internal
#xdebug.remote_port=9000
# Xdebug 3
#xdebug.mode=debug
#xdebug.start_with_request=yes
#xdebug.client_host=host.docker.internal
#xdebug.client_port=9003
#xdebug.idekey=VSCODE
Xdebug VS Code: Xdebug 拡張機能「PHP Debug」をインストールする必要があります。インストール後、[デバッグ] に移動し、IDE がリッスンして適切に動作できるように起動ファイルを作成します。
例:
非常に重要: pathMappings
VS Code でフォルダーを開いた方法によって異なります。各フォルダーには独自の構成起動があり、 .vscode/launch.json
で表示できます。
{
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
// "port": 9000, // Xdebug 2
"port" : 9003 , // Xdebug 3
"pathMappings" : {
// "/var/www/html": "${workspaceFolder } /www" // if you have opened VSCODE in root folder
"/var/www/html" : " ${workspaceFolder} " // if you have opened VSCODE in ./www folder
}
}
]
}
次に、ブレークポイントを作成してデバッグを実行します。
ヒント!これらの構成後、コンテナーを再起動する必要がある場合があります。
Redis が付属しています。デフォルトのポート6379
で実行されます。
https
ドメインのサポートは組み込まれていますが、デフォルトでは無効になっています。 SSL を有効にして構成するには 3 つの方法があります。 localhost
上のhttps
が最も簡単です。実稼働環境にできるだけ近いテスト環境を再作成しようとしている場合は、追加の構成を行うことで任意のドメイン名をサポートできます。
注意: https
を使用したい非 localhost ドメイン名ごとに、コンピュータの hosts ファイルを変更し、ドメイン名が127.0.0.1
を指すようにする必要があります。これを行わないと SSL が機能せず、ローカルでそのドメイン名にアクセスしようとするたびにインターネットにルーティングされます。
localhost
(https://localhost) でhttps
有効にするには、次の操作を行う必要があります。
localhost
の SSL 証明書を作成します。mkcert
を使用して、ターミナルでmkcert localhost 127.0.0.1 ::1
を実行します。cert.pem
およびcert-key.pem
に変更します。config/ssl
ディレクトリに配置して、Docker セットアップに移動します。config/vhosts/default.conf
内の443
vhost のコメントを解除します。終わり。これで、LAMP コンテナをオンにするとhttps
localhost
上で動作するようになります。
ローカル テストに通常のドメイン名を使用し、 https
サポートが必要な場合、最も簡単な解決策は、すべてのドメイン名をカバーする SSL 証明書です。
mkcert
を使用する場合は、ターミナルでmkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1
実行します。ここで、すべてのドメイン名と IP アドレスをサポートしたいものに置き換えます。cert.pem
とcert-key.pem
に変更します。config/ssl
ディレクトリに配置して、Docker セットアップに移動します。config/vhosts/default.conf
内の443
vhost のコメントを解除します。終わり。すべてのドメイン名を 1 つの証明書に結合したため、vhost ファイルはそれ以上変更しなくてもセットアップをサポートします。ただし、必要に応じてドメイン固有のルールを追加することもできます。これで、LAMP コンテナをオンにすると、指定したすべてのドメインでhttps
機能するようになります。
ローカルのテスト環境を運用環境と正確に一致させ、 https
サポートが必要な場合は、サポートしたいドメインごとに SSL 証明書を作成できます。
mkcert
使用する場合は、ターミナルでmkcert [your-domain-name(s)-here]
を実行し、括弧部分をドメイン名に置き換えます。[name]-cert.pem
や[name]-cert-key.pem
などの一意の名前に変更し、括弧部分を一意の名前に置き換えます。config/ssl
ディレクトリに配置して、Docker セットアップに移動します。config/vhosts/default.conf
) の443
例を使用して、ドメイン名と証明書ファイル名に一致する新しいルールを作成します。終わり。 LAMP コンテナは、起動時にconfig/ssl
内のすべての SSL 証明書を自動的に取り込みます。 vhosts ファイルを正しく構成し、SSL 証明書をconfig/ssl
に配置している限り、LAMP コンテナーhttps
オンにすると、指定したドメインで常に機能します。
プル リクエストを作成したり、人々の問題を解決したりしたいと思っていただければ幸いです。 PR を作成する場合は、このスタックは運用環境での使用を目的として構築されていないこと、および変更は汎用目的に適しており、過度に特殊化してはいけないことに注意してください。
プロジェクト構造が、php バージョンごとに複数のブランチから 1 つの集中マスター ブランチに簡素化されたことに注意してください。 master ブランチに対して PR を作成してください。
ありがとう!
私たちは、開発者が創造的なアプリケーションを迅速に作成できるようにしたいと考えています。したがって、いくつかの異なるフレームワークと PHP バージョン用に、簡単にセットアップできるローカル開発環境を提供しています。運用環境では、少なくとも次の主題を変更する必要があります。