docker-composeでPHPとMySQLの開発環境を作る

dockerとdocker-composeをインストールする。

# apt install docker.io docker-compose

下記のymlファイルを作成する。

version: '3'

services:
    php:
        image: php:7.3-apache
        volumes: 
            - /home/user/docker/test/www:/var/www/html
        ports:
            - "80:80"
        container_name: test-php
    mysql:
        image: mysql:5.7
        command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_bin
        volumes:
            - /home/user/docker/test/mysql:/var/lib/mysql
        ports:
            - "3306:3306"
        environment: 
            MYSQL_ROOT_PASSWORD: rootpassword
            MYSQL_DATABASE: test
            MYSQL_USER: test
            MYSQL_PASSWORD: password
        container_name: test-mysql

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

# cd /home/user/docker/test/
# docker-compose up -d

作成済みのコンテナを起動する。
※docker-compose.ymlが存在する場所で実行する

# docker-compose start

作成済みのコンテナを停止する。
※docker-compose.ymlが存在する場所で実行する

# docker-compose stop

コンテナを停止して削除する。
※docker-compose.ymlが存在する場所で実行する

# docker-compose down

Dockerのphp:7.0-apacheにXdebugを入れてみる

今回の目的は、とりあえずEclipseからデバッグできるようにすることです。

php:7.0-apacheイメージでコンテナ作成済みの前提です。
<コンテナ作成手順>

コンテナのbashを動かす。

# docker container exec -it test_php7 /bin/bash

xdebugをインストールする。

pecl install xdebug-2.7.2

php.iniがないので作成してとりあえずの設定を入れる。xdebug.soのパスはインストール後に出てくるが、わからなければ検索して。

zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1

Dockerのphp:7.0-apacheにcomposerを入れてみる

php:7.0-apacheイメージでコンテナ作成済みの前提です。
<コンテナ作成手順>

ゲストのbashを動かしたいので下記コマンド実行。

# docker container exec -it test_php7 /bin/bash

composerをインストールする。
※本当はrootでやっちゃダメなんだけど今回は検証環境構築目的なので

# curl https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer

ライブラリをインストールしてみる。https://packagist.org/を参考にインストールするライブラリを探す。今回はPHPMailerをインストールしてみる。
※rootでやっちゃってるので警告でます

# cd /var/www/html
# composer require phpmailer/phpmailer

「composer.json」「composer.lock」「vendor」ディレクトリが自動生成される。