印刷
カテゴリ: FreeBSDとLinux
参照数: 623

Dockerを使えるようになって、調子に乗ってます。

nodejs -> python -> php と、色々な環境構築作りを試してます。

次は、phpの最強フレームワーク Laravel環境です。

Dockerは、コマンドで使うのも良いんですが、VSCodeを使うことでより一層、使いやすくなります。

VSCodeは、マルチプラットフォームなので、さまざま環境で使用出来ますし、Dockerも同様ですね。

なので、相性も良いんじゃないでしょうか。

というか、最近は、VSCode一択のような感じです

まーとりあえず、やってみましょう。


Dockerfile

FROM ubuntu
RUN apt -y update
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Tokyo
RUN apt install -y tzdata
RUN apt install -y curl sudo unzip
RUN apt install -y php php-curl php-mbstring php-dom php-xdebug
WORKDIR /project
RUN curl -s https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer

docker-compose.yml

version: "3"
services:
pc1:
build:
context: .
volumes:
- ./project:/project
tty: true
working_dir: /project
command: bash init.sh

init.sh

#!/bin/sh

phpinipath=`php --ini | head -n 1 | cut -f 2 -d ':' | tr -d ' '`'/conf.d/99-app.ini'
if [ ! -e ${phpinipath} ]; then
 cp php.ini ${phpinipath}
fi

if [ ! -e lalatest1 ]; then
 composer create-project --prefer-dist laravel/laravel lalatest1
fi

bash

php.ini

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_port=9003

 

フォルダ構成

project

├Dockerfile

├docker-compose.yml

└project

  ├init.sh

  └php.ini


以上です

使い方は、簡単です。

起動

docker-compose up -d

シェルアタッチ

docker exec -it lalatest1_pc1_1 bash

デバッグ

VSCodeで、lalatest1_pc1_1コンテナをアタッチして、

php artisan serve

で、サーバーを起動します。

デバッグは、phpのlaunch.jsonを自動作成してから、xdebug リモートポート 9003番をリスナーさせておけば、勝手にphpが繋いでくれます。

後は、適当なソースにブレークポイントを設置すれば、キャッチしてくれますよ。