Laravel Docker · 6 min read · Sep 23, 2025
Ubuntu 22.04にDockerでLaravelをインストールする方法

Laravelは、モダンなPHPアプリケーションを構築するためのツールとリソースのセットを提供する無料のオープンソースPHPフレームワークです。互換性のあるパッケージや拡張機能が豊富にあり、Laravelは人気を博し、多くの開発者が選択するフレームワークとなっています。Laravelは、Eloquentと呼ばれるORM(オブジェクトリレーショナルマッパー)を含む強力なデータベースツールを提供し、データベースマイグレーションを作成するための組み込みメカニズムも備えています。新しいモデル、コントローラー、その他のアプリケーションコンポーネントをブートストラップするために使用できるコマンドラインツールArtisanが付属しており、全体的なアプリケーション開発を加速します。
アプリケーションをコンテナ化するとは、アプリケーションとそのコンポーネントを適応させて、コンテナと呼ばれる軽量環境で実行できるようにするプロセスを指します。このガイドでは、Docker Composeを使用して開発用のLaravelアプリケーションをコンテナ化します。
私たちは、Laravelアプリケーションのために3つのDockerコンテナを作成します。
- PHP 8.2-FPMを実行する
appサービス - MySQL 8.0を実行する
dbサービス - Laravelアプリケーションをユーザーに提供する前にPHPコードを解析するために
appサービスを使用するnginxサービス
また、Let’s Encryptを使用してLaravelウェブサイトのSSL証明書も作成します。
前提条件
- Ubuntu 22.04を実行しているサーバー。
- sudo権限を持つ非rootユーザー。
- サーバーを指す完全修飾ドメイン名(FQDN)。ここでは、
example.comをドメイン名として使用します。 - すべてが更新されていることを確認してください。
$ sudo apt update - 基本的なユーティリティパッケージをインストールします。いくつかはすでにインストールされているかもしれません。
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
ステップ1 - ファイアウォールの設定
最初のステップは、ファイアウォールを設定することです。Ubuntuにはデフォルトでufw(Uncomplicated Firewall)が付属しています。
ファイアウォールが実行中かどうかを確認します。
$ sudo ufw status
次の出力が得られるはずです。
Status: inactive
SSHポートを許可して、ファイアウォールを有効にしたときに現在の接続が切断されないようにします。
$ sudo ufw allow OpenSSH
HTTPおよびHTTPSポートも許可します。
$ sudo ufw allow http
$ sudo ufw allow https
ファイアウォールを有効にします。
$ sudo ufw enable
コマンドは既存のssh接続を中断する可能性があります。操作を続行しますか(y|n)? y
ファイアウォールはアクティブで、システム起動時に有効になっています
再度ファイアウォールの状態を確認します。
$ sudo ufw status
同様の出力が表示されるはずです。
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
ステップ2 - SSLのインストール
先に進む前に、まずドメインのSSL証明書を作成しましょう。これはDockerの外部で作成するため、管理が容易です。後で証明書をコンテナに同期させ、定期的に更新およびリフレッシュします。
SSL証明書を生成するためにCertbotをインストールする必要があります。Ubuntuのリポジトリを使用してCertbotをインストールするか、Snapdツールを使用して最新バージョンを取得できます。ここではSnapdバージョンを使用します。
Ubuntu 22.04にはデフォルトでSnapdがインストールされています。次のコマンドを実行して、Snapdのバージョンが最新であることを確認します。Snapdのバージョンが最新であることを確認してください。
$ sudo snap install core
$ sudo snap refresh core
Certbotをインストールします。
$ sudo snap install --classic certbot
次のコマンドを使用して、Certbotコマンドが/usr/binディレクトリへのシンボリックリンクを作成することによって実行されることを確認します。
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
次のコマンドを実行してSSL証明書を生成します。
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com
上記のコマンドは、サーバーの/etc/letsencrypt/live/example.comディレクトリに証明書をダウンロードします。
Diffie-Hellmanグループ証明書を生成します。
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
プロセスのドライランを行い、SSL更新が正常に機能しているかを確認します。
$ sudo certbot renew --dry-run
エラーが表示されなければ、すべて準備完了です。証明書は自動的に更新されます。
Dockerを設定し、Laravelをインストールした後、更新プロセスを変更する必要があります。これについては後のセクションで説明します。
ステップ3 - DockerとDocker Composeのインストール
Ubuntu 22.04には古いバージョンのDockerが付属しています。最新バージョンをインストールするには、まずDocker GPGキーをインポートします。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Dockerリポジトリファイルを作成します。
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
システムリポジトリリストを更新します。
$ sudo apt update
最新バージョンのDockerをインストールします。
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
実行中であることを確認します。
$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2023-01-14 10:41:35 UTC; 2min 1s ago
TriggeredBy: ? docker.socket
Docs: https://docs.docker.com
Main PID: 2054 (dockerd)
Tasks: 52
Memory: 22.5M
CPU: 248ms
CGroup: /system.slice/docker.service
?? 2054 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
デフォルトでは、Dockerはroot権限を必要とします。dockerコマンドを実行するたびにsudoを使用したくない場合は、ユーザー名をdockerグループに追加します。
$ sudo usermod -aG docker $(whoami)
この変更を有効にするには、サーバーからログアウトして再度同じユーザーでログインする必要があります。または、次のコマンドを使用します。
$ su - ${USER}
ユーザーがDockerグループに追加されたことを確認します。
$ groups
navjot wheel docker
ステップ4 - Laravelのダウンロードと依存関係のインストール
最初のステップは、最新のLaravelバージョンをダウンロードし、PHPパッケージマネージャーであるComposerを含む依存関係をインストールすることです。
Laravelアプリケーションディレクトリを作成します。
$ mkdir ~/laravel
ディレクトリに移動します。
$ cd ~/laravel
最新のLaravelリリースをディレクトリにクローンします。コマンドの末尾に.を忘れないでください。これはGitがファイルを現在のディレクトリにクローンすることを意味します。
$ git clone https://github.com/laravel/laravel.git .
DockerのComposeイメージを使用して、Laravelプロジェクトに必要なディレクトリをマウントします。これにより、Composerをグローバルにインストールする必要がなくなります。
$ docker run --rm -v $(pwd):/app composer install
上記のコマンドは、一時的なコンテナを作成し、現在のディレクトリにバインドマウントされ、削除されます。Laravelディレクトリの内容をコンテナにコピーし、コンテナ内でComposerが作成するvendorフォルダーが現在のディレクトリにコピーされることを保証します。
Laravelディレクトリの権限を設定し、現在ログインしているユーザーが所有するようにします。
$ sudo chown -R $USER:$USER ~/laravel
ステップ5 - Docker Composeファイルの作成
Docker composeファイルを作成し、編集のために開きます。
$ nano docker-compose.yml
以下のコードを貼り付けます。ここでは、3つのサービスapp、webserver、dbを定義します。dbサービスの下のMYSQL_ROOT_PASSWORDを、選択した強力なパスワードに置き換えます。
services:
app:
build:
context: .
dockerfile: Dockerfile
image: howtoforge/app
container_name: app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
working_dir: /var/www
volumes:
- ./:/var/www
- ./php/local.ini:/usr/local/etc/php/conf.d/local.ini
networks:
- app-network
webserver:
container_name: webserver
image: nginx:alpine
restart: unless-stopped
tty: true
ports:
- 80:80
- 443:443
volumes:
- ./:/var/www
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/logs:/var/log/nginx
- /etc/ssl/certs/dhparam.pem:/etc/ssl/certs/dhparam.pem
- /etc/letsencrypt:/etc/letsencrypt
logging:
options:
max-size: "10m"
max-file: "3"
networks:
- app-network
db:
image: mysql:latest
container_name: db
restart: unless-stopped
tty: true
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: laravel
MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
MYSQL_USER: laraveluser
MYSQL_PASSWORD: password
SERVICE_TAGS: dev
SERVICE_NAME: mysql
volumes:
- dbdata:/var/lib/mysql
- ./mysql/my.cnf:/etc/mysql/my.cnf
networks:
- app-network
volumes:
dbdata:
driver: local
networks:
app-network:
driver: bridge
ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
サービスを詳しく見てみましょう。
app- このサービスはLaravelアプリケーションを定義し、howtoforge/appというカスタムDockerイメージを実行します。このイメージは次のステップで作成します。コンテナ内のLaravelの作業ディレクトリは/var/wwwに設定されており、ホストの現在のディレクトリにマッピングされています。また、PHPコンテナにコピーされるPHP設定ファイルもマウントします。これについては後のステップで設定します。webserver- このサービスはNginx Dockerイメージを使用してコンテナを作成し、ホストにポート80と443を公開します。また、Nginxのログ、カスタム設定、Laravelアプリケーションディレクトリ、SSL証明書のためのボリュームをバインドマウントします。db- このサービスはMySQL Dockerイメージを使用してコンテナを作成し、データベース名とMySQLのrootパスワードを設定する環境変数を定義します。データベースの名前は任意に設定でき、MYSQL_ROOT_PASSWORDを選択した強力なパスワードに置き換えます。また、データベースにアクセスするMySQLユーザー名(MYSQL_USER_NAME)とパスワード(MYSQL_USER_PASSWORD)を設定します。このサービスは、コンテナのポート3306をホストのポート3306にマッピングします。また、カスタムMySQL設定のためのボリュームとMySQLデータのためのローカルボリュームもバインドマウントします。これにより、データを失うことなくdbサービスを再起動できます。
サービス間の通信を可能にするために、app-networkというDockerネットワークを作成しました。これはブリッジネットワークとして設定されています。これにより、接続されたコンテナが互いに通信できるようになります。ブリッジネットワークドライバーは、ホストマシンにルールをインストールし、異なるブリッジネットワーク上のコンテナが直接通信できないようにします。
ステップ6 - Dockerfileの作成
Dockerfileはカスタムイメージを作成するために使用されます。Laravelの標準イメージは存在しないため、Laravel用のカスタムイメージを作成するためにDockerfileを定義する必要があります。これには、アプリケーションのニーズに応じてパッケージをインストールし、Linux環境を構成するためのコマンドが含まれています。また、カスタムイメージをDocker Hubや任意のプライベートDockerレジストリに公開することもできます。Dockerfileのチュートリアルで詳細を学ぶことができます。
Dockerfileを作成し、編集のために開きます。
$ nano Dockerfile
以下のコードを貼り付けます。
FROM php:8.2-fpm
# composer.lockとcomposer.jsonをコピー
COPY composer.lock composer.json /var/www/
# 作業ディレクトリを設定
WORKDIR /var/www
# 依存関係をインストール
RUN apt-get update && apt-get install -y \
build-essential \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
locales \
zip \
jpegoptim optipng pngquant gifsicle \
vim \
libzip-dev \
unzip \
git \
curl \
libonig-dev
# キャッシュをクリア
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# 拡張機能をインストール
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd
# composerをインストール
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# 既存のアプリケーションディレクトリの内容を作業ディレクトリにコピー
COPY . /var/www
# 作業ディレクトリの権限をwww-dataユーザーに割り当て
RUN chown -R www-data:www-data \
/var/www/storage \
/var/www/bootstrap/cache
# ログとフレームワークディレクトリに書き込み権限を割り当て
RUN chmod 775 storage/logs \
/var/www/storage/framework/sessions \
/var/www/storage/framework/views
# ポート9000を公開し、php-fpmサーバーを起動
EXPOSE 9000
CMD ["php-fpm"]
ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
ここで何が起こっているのか見てみましょう。まず、php:8.2-fpm Dockerイメージの上にカスタムイメージを作成します。これはPHP 8.2-FPMがインストールされたDebianベースのイメージです。Dockerfileは、さまざまなディレクティブを使用して操作を実行します。RUNディレクティブは、コンテナ内での設定の更新、インストール、および構成を指定するコマンドを指定し、COPYディレクティブはファイルをコンテナにコピーし、EXPOSEディレクティブはコンテナ内のポートを公開し、CMDディレクティブはコマンドを実行します。
最初に、ホストのLaravelディレクトリからComposerファイルをコンテナ内の/var/wwwディレクトリにコピーします。また、コンテナの作業ディレクトリを/var/wwwに設定します。次に、Laravelが動作するために必要なさまざまな前提条件やパッケージをインストールします。これには、mbstring、gd、exif、zip、pdo_mysql、pcntlなどのPHP拡張が含まれます。次に、Composerパッケージマネージャーをインストールします。
次に、Laravelディレクトリのすべてのファイルをコンテナにコピーし、www-dataユーザーの作業ディレクトリの権限を設定します。これは、DebianプラットフォームでPHPがデフォルトで使用するユーザーです。次に、Laravelのログ、セッション、およびビューのディレクトリに正しい書き込み権限を設定します。
最後に、PHP-FPMサービス用に9000ポートを公開し、コンテナを起動するためのPHPコマンドを実行します。
ステップ7 - PHPの設定
PHPディレクトリを作成します。
$ mkdir ~/laravel/php
local.iniファイルを作成し、編集のために開きます。
$ nano local.ini
以下のコードを貼り付けます。
upload_max_filesize=40M
post_max_size=40M
ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。これらのディレクティブは、アップロードされたファイルの最大サイズを設定します。要件に応じて値を変更できます。デフォルトのディレクティブを上書きするために、任意のPHP特有の設定を追加できます。
ステップ8 - Nginxの設定
サイト設定用のNginxディレクトリを作成します。
$ mkdir ~/laravel/nginx/conf.d -p
Laravelを提供するためにPHP-FPMをFastCGIサーバーとして使用するNginx設定ファイルを作成する必要があります。
app.confファイルを作成し、編集のために開きます。
$ nano ~/laravel/nginx/conf.d/app.conf
以下のコードを貼り付けます。
server {
# httpリクエストをhttpsにリダイレクト
listen 80;
listen [::]:80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/public;
client_max_body_size 40m;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_ecdh_curve secp384r1;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# OCSPスタンピング
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}
ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
上記のファイルは、NginxがLaravelサイトのHTTPおよびHTTPSバージョンの両方を提供し、HTTPリクエストを自動的にHTTPSにリダイレクトするように設定します。client_max_body_sizeの値が前のステップで設定したアップロードサイズと一致することを確認してください。
PHPのロケーションブロックでは、fastcgi_passディレクティブがappサービスがポート9000のTCPソケットでリッスンしていることを指定します。PHP-FPMサーバーはUnixソケットでもリッスンできますが、TCPソケットよりも利点があります。しかし、サービスが異なるホストで実行されている場合は機能しません。ここでは、appコンテナがwebserverコンテナとは異なるホストで実行されています。
ステップ9 - MySQLの設定
一般的なクエリログを有効にし、対応するログファイルを指定するためにMySQLを設定します。
MySQLディレクトリを作成します。
$ mkdir ~/laravel/mysql
my.cnfファイルを作成し、編集のために開きます。
$ nano ~/laravel/my.cnf
以下のコードを貼り付けます。
[mysqld]
general_log = 1
general_log_file = /var/lib/mysql/general.log
ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
ステップ10 - 環境ファイルの設定
すべてのサービスを作成し、設定したので、コンテナを起動する時間です。しかし、その前にLaravelの環境変数を設定する必要があります。Laravelにはデフォルトの環境ファイル.env.exampleが付属しています。
例の環境ファイルのコピーを作成します。
$ cp .env.example .env
.envファイルを編集のために開きます。
$ nano .env
DB_CONNECTIONで始まるブロックを見つけ、変数の値を要件に応じて更新します。
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laraveluser
DB_PASSWORD=your_laravel_db_password
DB_HOSTの値はdbサービスになります。DB_NAME、DB_USERNAME、DB_PASSWORDは、Docker composeファイルのステップ4で選択したデータベース名、ユーザー名、およびパスワードになります。
ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
ステップ11 - コンテナを起動し、Laravelのインストールを完了する
ついにコンテナを起動する時間です。
$ docker compose up -d
このコマンドを初めて実行すると、Nginx、MySQLイメージがプルされ、作成したDockerfileを使用してappイメージが作成されます。プロセスが完了したら、次のコマンドを使用してコンテナの状態を確認できます。
$ docker ps
次のような出力が表示されます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a57be976c0fa mysql:latest "docker-entrypoint.s…" 6 hours ago Up 6 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp db
85e515c4a404 howtoforge/app "docker-php-entrypoi…" 6 hours ago Up 6 hours 9000/tcp app
8418bbc83bd3 nginx:alpine "/docker-entrypoint.…" 6 hours ago Up 6 hours 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp webserver
コンテナが実行中になったら、docker compose execコマンドを使用してコンテナ内でコマンドを実行し、Laravelのインストールを完了する時間です。
アプリケーションキーを生成し、ユーザーセッションを保護し、ユーザーデータを暗号化するために.envファイルにコピーします。
$ docker compose exec app php artisan key:generate
Laravelアプリケーションキャッシュを作成します。
$ docker compose exec app php artisan config:cache
このコマンドは、設定設定を/var/www/bootstrap/cache/config.phpファイルにロードします。
ブラウザでhttps://example.comにアクセスすると、Laravelのインストールが成功したことを示すページが表示されます。

ステップ12 - SSL更新の設定
Laravelサイトがアクティブになったので、SSL設定を再度確認し、更新を設定する時間です。これには、更新を開始する前にwebserverサービスを停止し、証明書が更新された後にサービスを再起動するスクリプトを作成する必要があります。Certbotは、この目的のためにpre_hookとpost_hookの2つのフックを提供します。
スクリプトを保存するためのSSLディレクトリを作成します。
$ mkdir ~/laravel/ssl
server-stop.shスクリプトを作成します。
$ sh -c 'printf "#!/bin/sh\ndocker stop webserver\n" > ~/laravel/ssl/server-stop.sh'
server-start.shスクリプトを作成します。
$ sh -c 'printf "#!/bin/sh\ndocker start webserver\n" > ~/laravel/ssl/server-start.sh'
スクリプトを実行可能にします。
$ chmod +x ~/laravel/ssl/server-*.sh
次に、Certbotにこれらのスクリプトを使用するように指示する必要があります。/etc/letsencrypt/renewal/example.com.confファイルを編集のために開きます。
$ sudo nano /etc/letsencrypt/renewal/example.com.conf
ファイルの最後に次の行を貼り付けます。
pre_hook = /home//laravel/ssl/server-stop.sh
post_hook = /home//laravel/ssl/server-start.sh
ファイルを保存するには、Ctrl + Xを押し、プロンプトが表示されたらYを入力します。
証明書更新プロセスをドライランでテストします。
$ sudo certbot renew --dry-run
成功を確認する似たような出力が得られます。
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/example.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Hook 'pre-hook' ran with output:
webserver
Simulating renewal of an existing certificate for example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/example.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Hook 'post-hook' ran with output:
webserver
これで、SSL証明書は自動的に更新され、DockerコンテナによってLaravelアプリケーションを提供するために使用されます。
ステップ13 - データ移行とTinkerコンソール
アプリケーションが実行されているので、データを移行し、tinkerコマンドを試すことができます。TinkerはLaravelのためのREPL(Read-Eval-Print Loop)です。tinkerコマンドは、Laravelが事前にロードされたPsySHコンソールを起動します。PsySHはPHPのためのランタイム開発者コンソールおよびインタラクティブデバッガです。tinkerコマンドを使用すると、インタラクティブシェルでコマンドラインからLaravelアプリケーションと対話できます。
コンテナ内でartisan migrateコマンドを使用してMySQL接続をテストします。これにより、データベースにmigrationsテーブルが作成されます。
$ docker compose exec app php artisan migrate
次のような出力が得られます。
INFO Preparing database.
Creating migration table .............................................................................................. 32ms DONE
INFO Running migrations.
2014_10_12_000000_create_users_table .................................................................................. 184ms DONE
2014_10_12_100000_create_password_resets_table ......................................................................... 259ms DONE
2019_08_19_000000_create_failed_jobs_table ............................................................................ 102ms DONE
2019_12_14_000001_create_personal_access_tokens_table .................................................................. 46ms DONE
次に、tinkerコマンドを使用してPsySHコンソールを起動します。
$ docker compose exec app php artisan tinker
次のプロンプトが表示されます。
Psy Shell v0.11.10 (PHP 8.2.1 — cli) by Justin Hileman
>
コンソールプロンプトで、移行したデータを取得するために次のコマンドを実行してMySQL接続をテストします。
> \DB::table('migrations')->get();
次のような出力が得られます。
= Illuminate\Support\Collection {#3670
all: [
{#3679
+"id": 1,
+"migration": "2014_10_12_000000_create_users_table",
+"batch": 1,
},
{#3681
+"id": 2,
+"migration": "2014_10_12_100000_create_password_resets_table",
+"batch": 1,
},
{#3682
+"id": 3,
+"migration": "2019_08_19_000000_create_failed_jobs_table",
+"batch": 1,
},
{#3683
+"id": 4,
+"migration": "2019_12_14_000001_create_personal_access_tokens_table",
+"batch": 1,
},
],
}
コンソールから出るにはexitと入力します。
> exit
INFO Goodbye.
tinkerを使用してデータベースと対話したり、サービスやモデルを試したりできます。これで、Laravelを使用してさらなる開発を開始できます。
結論
これで、Docker、MySQL、PHPを使用してLaravelアプリケーションをコンテナ化してインストールし、安全なドメイン名でアプリケーションを提供する方法を学びました。質問がある場合は、下のコメントに投稿してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。