第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コマンドで力業で所有者変更してたのですが、よろしくなかったです。すみません。


この記事が気に入ったらサポートをしてみませんか?