PHP と Laravel の開発環境も Docker で整えてしまうと楽です。今回の記事では、VSCodeもDockerに含めてみました。開発環境をまるごとDockerで管理できるので、管理がしやすいのでオススメです。
登場人物
Dockerとは
Linux上でコンテナーでアプリを動作させる環境です。アプリケーションとライブラリーを同一のコンテナーで固めて、使い回すことができます。
https://ja.wikipedia.org/wiki/Docker
VSCode
https://ja.wikipedia.org/wiki/Visual_Studio_Code
Microsoft製のEditorです。Dart Pluginを入れると、補間機能などが使えて便利です。
Code-Server
VSCodeをWebサービスとして動作させることができる凄いやつです。
https://github.com/cdr/code-server
環境を作ってみる
(1) dockerfile を書く
FROM php:7
RUN apt-get update -y && apt-get install -y openssl zip unzip git
RUN apt-get install -y curl wget gnupg less lsof net-tools git apt-utils
RUN apt-get install -y emacs
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install pdo mbstring
WORKDIR /app
COPY . /app
#RUN composer install
#CMD php artisan serve --host=0.0.0.0 --port=8181
#
# CODE-SERVER
RUN wget https://github.com/cdr/code-server/releases/download/1.939-vsc1.33.1/code-server1.939-vsc1.33.1-linux-x64.tar.gz
RUN tar xzf code-server1.939-vsc1.33.1-linux-x64.tar.gz -C ./ --strip-components 1
(2) docker image を走らせる
docker build -t php_laravel_vscode .
docker run -p 8443:8443 -p 8080:8080 -it php_laravel_vscode bash
# docke の中で
mkdir /app/w
/app/code-server /app/w --allow-http --no-auth
(3) and 'http://127.0.0.1:8443/' を ブラウザーで開く
試しに何か作ってみる
(1) Terminal -> New Terminal on VSCODE
(2) Terminal 上で以下を入力
root@8e5699b9caa4:/works/w# composer create-project --prefer-dist laravel/laravel blog
root@8e5699b9caa4:/works/w# cd blog
root@8e5699b9caa4:/works/w# php artisan serve --host 0.0.0.0 --port 8080
(3) 'http://127.0.0.1:8080/' を ブラウザーで開く
以上です。
Code-Serverがとても便利でしたね。
https://github.com/cdr/code-server
終わり。
今回のコードは以下にまとめました。
https://github.com/kyorohiro/my-code-server/tree/master/php_laravel
PS
[a] 再開したい場合
$ docker ps -a
check id and
$ docker start < id >
$ docker exec -it < id > bash
[b] 設定を変更したい場合
$ docker commit < id > php_laravel_vscode_xxx
$ docker run -p 8443:8443 -p 8080:8080 -it php_laravel_vscode_xxx bash
[c] マウント
$ docker run -p 8443:8443 -p 8080:8080 -v /Users/kyorohiro/w/xxx:/app/w -it php_laravel_vscode_xxx bash