1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DockerでPHPの環境を構築する①

Posted at

必要とする要素は
・PHP
・Apache
・MySQL
であり、そのうち今回はPHPとApacheを用意してindex.phpを実行させるシンプルな環境を構築する。
しかし、公式でPHPとApacheがセットになっているイメージが提供されているから、それを使用する。

#ディレクトリ構成

Docker-|-Dockerfile
       |-index.php

となっており、デスクトップ上にDockerというディレクトリを作成している。
その中にDockerfileと実際のPHPのソースコードのindex.phpが存在している。

##ステップ① index.phpを作成する

index.php
<?php
echo 'hello world';

hello worldを表示するシンプルなソースコード。

##ステップ② Dockerfileを作成する

Dockerfile
FROM php:7.2-apache
LABEL maintainer="carametal"
COPY ./ /var/www/html/

COPY命令でカレントディレクトリをコンテナの/var/www/htmlにコピーすることで
カレントディレクトリのindex.phpとDockerfileが/var/www/html配下にコピーされる。
Apacheは「IPアドレス/」へのアクセスに対して/var/www/html/index.phpをデフォルトで実行する。

##ステップ③ イメージを作成する(ビルドする)

Desktop/Docker
docker build -t php7.2-apache .

##ステップ④ コンテナを作成し、実行する

Desktop/Docker
docker container run -p 8000:80 --name php-test php7.2-apache

これでApacheサーバが立ち上がって、
localhost:8000hello worldが表示される。

サーバーを停止する時は、Cntroll + cで停止する。

###ちなみに①

Desktop/Docker
docker container run -p 8000:80 --name php-test -v ${PWD}:/var/www/html php7.2-apache

こっちのコマンドでコンテナを起動すると、リアルタイムにPHPの変更された場所が反映される。

###ちなみに②

Desktop/Docker
docker container run -d -p 8000:80 --name php-test -v ${PWD}:/var/www/html php7.2-apache

とすると、バックグラウンドで起動できるから、ターミナルが使えるようになる。

###ちなみに③
バックグラウンドの状態(-d)の状態だと、ターミナルが使えてコンテナの中に入ることができる。

Desktop/Docker
docker exec -it php test bash

そうすると、Linuxのフォルダが一覧できる。
コンテナから抜ける場合は

exit

とコマンドを打つと抜けられ、
バックグランドの状態だとcontroll + cが使えないから、

docker stop php-test

と打つと、コンテナが停止される。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?