AWS AppRunnerは2022-01-07現在複数コンテナのオーケストレーション機能がない。 そのためphp:7.4.27-apacheを使用する。
ドキュメントルートは/var/www/html/public
にする
000-default.conf
にDocumentRoot /var/www/html/public
を追加.htaccess
を使用するために、/etc/apache2/apache2.conf
で/var/www/html/public
のAllowOverride
ディレクトティブにAll
を設定a2enmod rewrite
を追記.htaccess
を/var/www/html/public
に作成<VirtualHost *:80>
ServerAdmin webmaster@localhost
+ DocumentRoot /var/www/html/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
AllowOverride All
は.htaccess
で上書きを有効にするディレクティブなので、
親ディレクトリで有効なものみ.htaccess
に記載する場合は当該ディレクトリの設定は必要ない。
※ 該当ディレクトリにAllowOverride All
が設定されているディレクトリのみ.htaccess
を使用できると勘違いしていたが、.htaccess
はAllowOverride All
が設定されていないディレクトリでも使用できる。
AllowOverride All
はあくまで.htaccessでの上書きを許可するかを設定するもの
以下は必要なかった。
+ <Directory /var/www/html/public>
+ Options Indexes FollowSymLinks
+ AllowOverride All
+ Require all granted
+ </Directory>
FROM php:7.4.27-apache
EXPOSE 80
COPY .docker/php-httpd/000-default.conf /etc/apache2/sites-available/000-default.conf
COPY .docker/php-httpd/apache2.conf /etc/apache2/apache2.conf
COPY ./ ./
RUN a2enmod rewrite
RUN chown -R www-data:www-data /var/www/html
# .htaccess
# @see https://gist.github.com/Guibzs/a3e0b3ea4eb00c246cda66994defd8a4
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
RedirectMatch 302 ^/$ /index.php/
</IfModule>
</IfModule>
起動中のコンテナ内のファイルをコピーするにはdocker cp
を使用する。
コンテナが稼働している最中にコンテナ内のファイルをローカルにコピーする。
またはその逆。
ref. http://docs.docker.jp/v19.03/engine/reference/commandline/cp.html
# コンテナ内の/path/to/sourceをローカルの./path/to/destinationにコピー
$ docker cp コンテナID:/path/to/container ./path/to/local
// 例
docker cp symfony-micro-app:/etc/apache2/sites-available/000-default.conf ./000-default.conf
# 組み込みモジュールを確認
$ apachectl -l
Compiled in modules:
core.c
mod_so.c <=== これが表示されれば動的モジュールを利用できる
mod_watchdog.c
http_core.c
mod_log_config.c
mod_logio.c
mod_version.c
mod_unixd.c