###状況
Dockerfile
FROM php:7.3-fpm
COPY php.ini /usr/local/etc/php/
RUN apt-get update \
&& apt-get install -y zlib1g-dev libzip-dev mariadb-client \
&& docker-php-ext-install zip pdo_mysql
#Composer install
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
RUN composer global require "laravel/installer"
php:7.3-fpmのDockerfile下のように書き、docker-compose up -d --build
すると、次のようなエラーが出る。
ERROR: for php-fpm Cannot start service php-fpm: OCI runtime create failed: container_linux.go:344: starting container process caused "chdir to cwd (\"/var/www/html\") set in config.json failed: permission denied": unknown
ERROR: Encountered errors while bringing up the project.
chdir to cwd (\"/var/www/html\")
などを見るとphp-fpmの作業ディレクトリの問題だろうと思いDockerfileを修正する。
Dockerfile
WORKDIR /var/www
今回はアプリを/var/www
に置いているので、そこを作業ディレクトリに指定してみる。
再びdocker-compose up -d
してみると無事コンテナが起動する。
###原因
単純にDockerfileに作業ディレクトリの指定がなく、/var/www/html
となっていたこと。
なぜ/var/www/html
となっていたかはわからない。デフォルトではそうなるのだろうか。