第9回 Laravel10 環境構築メモ(一般ユーザーを作ってログインするためにDockerFileとdocker-compose.ymlを修正する)
はじめに
第1回で環境構築を行った際に見落としてた点に気が付きました。PHPのコンテナの中でphp artisanコマンドを実行するとrootでfileが作成されてしまうのすね。これだと、PhpStormで編集すると権限の問題でエラーになり、保存できなかったりします。なので、今回は一般ユーザーをコンテナ内に作成しつつ、ターミナルから作成したユーザーでログインできるように修正をします。
DockerFileを修正
ここから >>から<< ここまでを追加するまでの部分を参考に修正してください。USER_NAME、GROUP_NAME、UID(user id)、GID(group id)については、WLS2のログインユーザーの情報をidコマンドで取得して、環境に合わせて入力してください。これで、phpのコンテナに一般ユーザーが作成されました。
docker/php/Dockerfile
# Dockerimage の指定
FROM php:8.2-fpm
EXPOSE 5173
COPY php.ini /usr/local/etc/php/
# Package & Library install
RUN apt-get update \
&& apt-get install -y zlib1g-dev mariadb-client vim libzip-dev nodejs npm\
&& docker-php-ext-install zip pdo_mysql
RUN pecl install xdebug && docker-php-ext-enable xdebug
# Composer install
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
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
# 今回は、ここから >>
ARG USER_NAME=XXXXX
ARG GROUP_NAME=YYYYY
ARG UID=WWWWW
ARG GID=ZZZZZ
RUN groupadd -g $GID $GROUP_NAME
RUN useradd -m -s /bin/bash -u $UID -g $GID $USER_NAME
USER $USERNAME
# << ここまでを追加する
# WorkDir Path setting
WORKDIR /var/www
# Laravel Package install
RUN composer global require "laravel/installer"
が、ここまでだとPhpStromのターミナルから入るとrootユーザーのままです。suコマンドでuserを切り替える方法もあるのですが、面倒なのでdocker-compose.ymlの修正もしっかりしておきましょう。
docker-compose.ymlを修正
一行追加するだけです!!
docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7.36
container_name: "mysql"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mysql_db
MYSQL_USER: admin
MYSQL_PASSWORD: secret
TZ: 'Asia/Tokyo'
ports:
- 3306:3306
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- db_data:/var/lib/mysql
- db_my.cnf:/etc/mysql/conf.d/my.cnf
- db_sql:/docker-entrypoint-initdb.d
php:
build: ./docker/php
container_name: "php-fpm"
ports:
- 5173:5173
volumes:
- ./src:/vaX/www
user: XXXXX # << ここに先ほど作成したuser nameを指定する
nginx:
image: nginx:latest
container_name: "nginx"
ports:
- 80:80
tty: true
volumes:
- ./src:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
volumes:
db_data:
db_my.cnf:
db_sql:
おしまい
途中でもろもろインストールしてる最中に自動作成されるファイルの権限がrootになっており、この問題、気が付いてはいたのですが、chownコマンドで力業で所有者変更してたのですが、よろしくなかったです。すみません。