docker-compose+PHP+ApacheでPHPを実行する
Webアプリをコンテナ上で動作させるためには、WebサーバやDBサーバの複数のコンテナを連携させる必要があります。
複数のコンテナを設定したり操作するためのツールがdocker-composeです。
今回はdocker-composeを使って、前回作成したphpinfo()を表示するだけのWebサーバを実行してみます。
前回の内容はこちら。
目次
環境
Ubuntu18.04
docker-composeインストール
こちらの公式ドキュメントに従ってインストールします。
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose
バージョンを確認します。
$ docker-compose --version docker-compose version 1.24.0, build 0aa59064
docker-compose.yaml作成
docker-composeでは、docker-compose.yamlファイルにコンテナの設定を記載していきます。
今回はこのようなファイル構成で、docker-compose.yamlを作成しました。
ファイル構成
$ tree . . ├── docker-compose.yml ├── html │ └── index.php └── web └── Dockerfile 2 directories, 3 files
docker-compose.yamlのリファレンスはこちら。
今回は極力シンプルにしていますが、コンテナのパーティションの設定など、かなり細かな指定ができるようです。
$ cat docker-compose.yml version: "3.7" services: web: build: "./web" container_name: "php_apache_image" ports: - "80:80" volumes: - "./html/:/var/www/html/"
Dockerfileは前回と同じです。
$ cat web/Dockerfile FROM php:7.3.4-apache
dockerイメージをビルドして実行
docker-composeでイメージをビルドして実行します。
$ docker-compose build --no-cache Building web Step 1/1 : FROM php:7.3.4-apache ---> 1dffbbe4a5d3 Successfully built 1dffbbe4a5d3 Successfully tagged sample2_web:latest $ docker-compose up
ブラウザから確認してみます。 http://localhost:80/
docker-composeからdocker imageを作成してコンテナを実行することができました。
最後に
docker-composeは、dockerコマンドよりもシンプルなコマンドで実行できて便利ですね。 次はWebサーバのコンテナとDBサーバのコンテナの連携などを試していこうと思います。