DockerでPHPのコンテナを試してみる

Vagrantでdockerの環境を起動。

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provision :docker
end
> vagrant up
> vagrant ssh

PHPのイメージを取得。

$ docker pull php:latest
$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
php          latest    b6f7ff80017a   5 days ago   422MB

対話モードで実行

phpのDockerfileを見ると、CMDはphpを対話モードで実行するだけ。 https://github.com/docker-library/php/blob/74175669f4162058e1fb0d2b0cf342e35f9c0804/8.0/buster/cli/Dockerfile

・・・
CMD ["php", "-a"]

コンテナを作成して起動すると、

$ docker create -it --name hoge php:latest
$ docker start -ai hoge

PHPの対話モードになる。

php > echo "Hello, world!";
Hello, world!

ビルドインウェブサーバーを実行

php -S 0.0.0.0:80」でビルトインウェブサーバーを実行するようにして、
コンテナを作成して起動。

$ docker create --name hoge2 -p 80:80 -v /home/vagrant:/hoge -w /hoge php:latest php -S 0.0.0.0:80
$ docker start hoge2

inde.phpを作成。

$ vi index.php
<?php
echo "Hello, world!";

ブラウザからアクセスすると、PHPが表示される。
f:id:yk5656:20210127131455j:plain

※runだとイメージの取得から起動までまとめて行える。

$ docker run -d --name hoge2 -p 80:80 -v /home/vagrant:/hoge -w /hoge php:latest php -S 0.0.0.0:80