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

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

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

コンテナのbashを動かす。

# docker container exec -it test_php7 /bin/bash

xdebugをインストールする。

pecl install xdebug

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」ディレクトリが自動生成される。

DockerでPHP7+Apacheを動かしてみた

イメージの取得。

# docker image pull php:7.0-apache

コンテナを生成して実行。ここでホストのディレクトリをゲストのwwwにマウントする-vオプションを付ける。

# docker container run -d --name test_php7 -v /home/user/apache_test:/var/www/html -p 80:80 -p 443:443 php:7.0-apache

もうこれだけで127.0.0.1にアクセスすれば動くのだが、このときは.htaccessによる設定変更が必要だったので下記も実行する。

# docker container exec -i -t test_php7 /bin/bash
# a2enmod rewrite

まだゲストのコンソールだと思うので、そのまま更にMySQL拡張もインストール。

# docker-php-ext-install pdo pdo_mysql

zip拡張も使うのでインストール。

# apt update
# apt install zlib1g-dev
# docker-php-ext-install zip

あとはコンテナを再起動して完了。

Ubuntu16.04でDockerのPostgreSQLをなんとなく動かしてみた

Dockerさわってみた感想

なんとなくのイメージは「imageの取得」→「imageからcontainerの生成」→「containerの開始」←→「containerの停止」が主かな。現在動いているcontainerをimageにしてtarとして保存したり、逆に読み込んでcontainerを作ったりできる。

“docker.io” をインストール。最初に “docker” をインストールしてdockerコマンド実行したらdockerはインストールされていませんて言われた。関係ないソフトらしい。

$ sudo apt-get install docker.io

PostgreSQL9.5のimageの取得。最新が良い場合は “postgres:9.5” の箇所を “postgres” とする。

$ sudo docker image pull postgres:9.5

取得済みのimageを確認する。

$ sudo docker image list

取得済みのimageを削除する。

$ sudo docker image rm postgres:9.5

取得済みのimageからcontainerを生成して実行する。
-dはデーモンとして起動、-eは環境変数を設定、-pはポート転送(ホストの待ち受けポート:コンテナのポート)

$ sudo docker container run -d --name test_postgres -e POSTGRES_PASSWORD=password -p 5432:5432 postgres:9.5

containerのプログラムを実行する。
-itは標準出力をホストと連結する指定。

$ sudo docker container exec -i -t test_postgres /bin/bash

containerの停止。

$ sudo docker container stop test_postgres

containerの再開。

$ sudo docker container start test_postgres

containerの削除。

$ sudo docker container rm test_postgres

実行中のcontainerを確認する。実行中ではないものも表示する場合は-aオプションを使う。

$ sudo docker container list

使用されていないvolumeを一括削除する。

$ sudo docker volume prune

containerで使用しているvolumeなどを調べる。データベースの内容をバックアップしたい場合はvolumeの情報をバックアップする必要がる。

$ sudo docker container inspect test_postgres