プログラミングを始めようと思ったらまずは開発環境を整えなければなりません。そのために一番ラクな方法は自分のパソコンでDockerを使えるようにするところからです。誰でもかんたんにDockerを使えるようにしてPHPフレームワークのデファクトスタンダードであるLaravelをサクッと動かしてみましょう。
![]() | プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化 [ WINGSプロジェクト 阿佐 志保 ] 価格:3300円 |

![]() | Docker実践ガイド 第3版 (impress top gear) [ 古賀 政純 ] 価格:4180円 |

おおまかな流れ
- ディレクトリをつくる
- dockerコンテナを立ち上げる
- Laravelの必要ファイルをcomposerでとってくる
- .envつくって表示
ディレクトリをつくる
とりあえずこれコピペで大丈夫です、あとでLaravelのコードなどのディレクトリもつくります
mkdir -p ~/myfirstapp/docker/{nginx,php,mysql}
~は自分のホームディレクトリ、そこに開発用ディレクトリをつくってアプリケーション名のディレクトリをつくる。
これで嫌になったら ~/myfirstappを消してしまえば何もなかったことになる!!
![]() | 【中古】[コードの気持ちがわかる!]プログラミングの英単語 入門で挫折しないための必須単語150/技術評論社/松元大地(単行本(ソフトカバー)) 価格:1621円 |

![]() | Pythonでチャレンジするプログラミング入門 もう挫折しない!10の壁を越えてプログラマーになろう 石上晋/著 横山直敬/著 価格:2420円 |

dockerコンテナ立ち上げる
コピペでOK、docker-compose.ymlの作成
cd ~/myfirstapp/docker vi docker-compose.yml
docker-compose.yml
volumes: myfirstapp-db-data: myfirstapp-php-fpm-socket: myfirstapp-vendor-data: myfirstapp-node-data: services: myfirst-app: container_name: myfirst-app build: ./php volumes: - ../src:/var/www/html - myfirstapp-php-fpm-socket:/var/run/php-fpm - myfirstapp-vendor-data:/var/www/html/app/vendor - myfirstapp-node-data:/var/www/html/app/node_modules depends_on: - myfirstapp-web myfirstapp-web: container_name: myfirstapp-web build: ./nginx ports: - "8000:80" volumes: - ../src:/var/www/html - myfirstapp-php-fpm-socket:/var/run/php-fpm - myfirstapp-vendor-data:/var/www/html/app/vendor - myfirstapp-node-data:/var/www/html/app/node_modules depends_on: - myfisrtapp-db myfirstapp-db: container_name: myfirstapp-db image: mysql:8.0 ports: - 3306:3306 volumes: - myfirstapp-db-data:/var/lib/mysql environment: MYSQL_ROOT_USER: root MYSQL_ROOT_PASSWORD: 1234 MYSQL_DATABASE: myfirstapp TZ: Asia/Tokyo
nginxコンテナのビルド設定
それぞれのコンテナの調整する。既存のイメージを使ってもよいが微妙にかゆいところに手が届かないので独自カスタマイズを行います。
cd ~/myfirstapp/docker/nginx touch Dockerfile default.conf nginx.conf vi Dockerfile
まずはnginxコンテナのDockerfileを編集します。設定ファイルをコピーするだけの至ってシンプルな構成
FROM nginx:latest COPY ./default.conf /etc/nginx/conf.d/default.conf COPY ./nginx.conf /etc/nginx/nginx.conf
default.confはLaravelが動くようにする、細かいことはあとから調べるとしてまずはLaravel動かすことを目的としてコピペでいきましょう。
server { listen 80; server_name localhost; index index.html index.htm index.php; root /var/www/html/public; access_log /dev/stdout main; error_log /dev/stderr warn; location / { try_files $uri $uri/ /index.php$is_args$args; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \\.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \\.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\\.ht { # deny all; #} }
nginx.confはただただログをコンテナのstderrに出力してほしいがための設定です。これをやると docker logs -f myfirstapp-web とればnginxのログをtailできます。それ以外はデフォルト設定です。
user www-data; worker_processes 1; error_log /dev/stderr warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /dev/stdout main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
![]() | nginx実践入門 (WEB+DB press plusシリーズ) [ 久保達彦 ] 価格:3047円 |

![]() | 「挫折」というチカラ 人は折れたら折れただけ強くなる(マガジンハウス新書) [ 原晋 ] 価格:1100円 |

phpコンテナのビルド設定
phpコンテナのビルドはnodejsのインストールなど少しだけ複雑になりますが、これもまずはコピペでOKです。
cd ~/myfirstapp/docker/php vi Dockerfile
FROM php:8.3-fpm # composerのインストール COPY --from=composer:2.6 /usr/bin/composer /usr/bin/composer RUN apt-get update -qq && apt-get install --no-install-recommends -y \ gnupg \ git \ zip \ unzip \ libzip-dev \ && docker-php-ext-install \ pdo_mysql \ bcmath \ zip # node.jsのインストール RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ && apt-get install -y nodejs WORKDIR /var/www/html COPY ./zzz-www.conf /usr/local/etc/php-fpm.d/zzz-www.conf
zzz-www.confはphp-fpmの設定ファイルを上書きします。これでphp-fpmのソケットファイルの場所やパーミッション・オーナーなどを設定しますが、こちらもコピペでOK
zzz-www.conf
[www] listen = /var/run/php-fpm/php-fpm.sock listen.owner = www-data listen.group = www-data listen.mode = 0666
Dockerコンテナを立ち上げる
ここまで来たらdockerコンテナを立ち上げることができますので、立ち上げてみましょう
cd ~/myfirstapp/docker docker compose up -d
ズラズラとログが流れていきますが、最後にすべてのコンテナが started となれば大丈夫です。ちょっとだけ時間かかります。
Laravelのコードをもってくる
composerでLaravelのコードをもってきます。
cd ~/myfirstapp/ composer create-project laravel/laravel ./src
他にもzipでもってくるなど方法はいくつかありますが、composerでやるのがいちばん楽かなと思います。
.envとkeyをつくる
Laravelアプリケーションの環境変数を設定するための.envとLaraアプリケーション全般で使用するキーの作成を行います。
cd ~/myfirstapp/src cp .env.example .env php artisan key:generate
これでLaravelの初期画面が表示されると思いますが、なかなか初学者の皆様には難しいところがあるかもしれません。途中でわけわからなくて諦めることもあるでしょう。ガチエンジニアプログラミングスクールでは初学者の皆様にも挫折せずにプログラミングを続けてもらえるようサポートしておりますのでお気軽にお問い合わせください。
