2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Docker Composeを用いてLaravel環境構築

Posted at

はじめに

前回の記事までで、docker-composeの基礎部分は理解できたと思いました。今回はdocker-composeを使用してLaravel環境を構築していこうと思います。

ファイル準備

ディレクトリ構成
/ -- docker-compose.yml
                   app/ -- Laravelアプリのソースコード
                   
                   web/ -- Dockerfile
                              apache/ -- 000-default.conf
                                 php/ -- php.ini
/ docker-compose.yml
docker-compose.yml
version: '3'

services:
  web:
    build: ./web
    container_name: web
    # Laravelのソースコードを格納する
    volumes:
      - ./app:/var/www/html
    # working_dirを設定することで、コンテナに入った時にこのディレクトリから入れる
    working_dir: /var/www/html
    ports:
      - "8080:80"
    depends_on:
      - db
  db:
    image: mysql:8.0
    container_name: db
    ports:
      - 3306:3306
    environment:
      MYSQL_DATABASE: LaravelDB
      MYSQL_ROOT_PASSWORD: password
/ web / Dockerfile
Dockerfile
FROM php:8.0-apache

# phpの設定ファイルとhttpdの設定ファイルをコンテナ内に設コピー
COPY ./php/php.ini /usr/local/etc/php/
COPY ./apache/000-default.conf /etc/apache2/sites-enabled/

RUN apt-get update

# Laravelプロジェクト作成に必要なパッケージをインストール
RUN apt -y install git unzip

# phpで必要なモノをインストール
RUN docker-php-ext-install pdo_mysql mysqli

# composerのインストール
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php -r "if (hash_file('sha384', 'composer-setup.php') === 'ハッシュ値') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
    && php composer-setup.php \
    && php -r "unlink('composer-setup.php');" \
    && mv composer.phar /usr/local/bin/composer

#Laravelプロジェクトの作成
RUN composer create-project laravel/laravel --prefer-dist laravel_sample

# -- memo -- #
# RUN命令はDockerfileからイメージを作成するときに実行される
# CMD命令はイメージからコンテナが作成される時に実行される
/ web / apache / 000-default.conf
000-default.conf
<VirtualHost *:80>

        DocumentRoot /var/www/html/laravel_sample/public

        <Directory /var/www/laravel_sample>
                AllowOverride All
                Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
/ web / php / php.ini
php.ini
[Date]
date.timezone = "Asia/Tokyo"

[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
ポイント
  • / docker-compose.yml
    volumesでLaravelプロジェクトを作成するディレクトリを指定しています。そのため、ローカルでは /app ディレクトリにLaravelのソースコードが同期されます。

  • / web / Dockerfile
    Laravel環境構築に必要なモノ(Composerなど)のインストールや設定ファイルをローカルからコンテナにコピーしたりしています。「docker-php-ext-install」をすることで、インストールと有効化を同時にしています。
    最後にLaravelプロジェクトを作成しています。

  • / web / apache / 000-default.conf
    apacheのバーチャルホストの設定を記載しています。

Laravel環境を構築する

コンテナを作成・起動する

以下のコマンドを実行することで、Laravel環境が構築され、Laravelプロジェクトも作成されます。

docker-compose up -d
起動確認

以下にアクセスし、Laravelの初期ページが表示されれば構築成功です。

http://localhost:8080

最後に

当初の目的であった、dockerでLaravel環境構築は達成できました。
これからは、実際に構築したLaravel環境で簡単なアプリケーションを開発してみようと思います。

参考文献

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?