【Docker】CentOS6 + php5.6 + MySQL5.5 + xDebug + VSCodeの開発環境を作る
今回は下記の前回の記事にMySQL加えてみた環境になります。
前回の記事:
今回はMySQLを加えるためにdocker-compose.ymlを使って、CentOS + PHPコンテナとMySQLコンテナを分けてみました。
docker-compose.ymlを作成
version: '2'
services:
mysql:
build: ./mysql
environment:
MYSQL_ROOT_PASSWORD: pass
MYSQL_DATABASE: test_database
MYSQL_USER: root
MYSQL_PASSWORD: pass
ports:
- '3306:3306'
volumes:
- db:/var/lib/mysql
php:
build: ./php
ports:
- '3000:3000'
volumes:
- ./html:/var/www/html
depends_on:
- mysql
volumes:
db:
上記記述でMySQL用のDockerfileと、PHP用のDockerfileを別々に処理させることができます。
MySQL用のDockerfileを作成
FROM mysql:5.5
COPY ./my.cnf /etc/mysql/conf.d/
#hostのmy.cnfファイルを使って、コンテンの中の/etc/mysl/conf.dにコピーしていきます
上記ではMySQL5.5をインストールしていますが、各自の都合に合わせて変更してください。 次にmy.cnfが必要です。
MySQL用のmy.cnfを作成
[mysqld]
character-set-server=utf8
ここでは文字コードを指定しています。 ひとまずこれだけです。 次にPHPファイルになります。
PHPの設定ファイルを作成
# どのイメージを基にするか
FROM centos:6
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# system update
RUN yum -y update && yum clean all
RUN yum -y install epel-release
RUN yum -y --disablerepo=epel install expect httpd-devel mod_ssl php-devel php-pear mariadb-server php-mbstring php-xml php-gd php-mysql || exit 1
# remi repo
RUN yum install -y http://rpms.famillecollet.com/enterprise/remi-release-6.rpm && \
yum clean all
# php install
RUN yum install --enablerepo=remi-php56 -y php php-devel php-gd php-mbstring php-mcrypt php-mysqlnd php-pear php-xml php-opcache && \
yum clean all
# ADD
ADD php.ini /etc/php.ini
ADD httpd.conf /etc/httpd/conf/httpd.conf
# xdebug install
RUN yum install -y gcc \
&& pecl install xdebug-2.5.5
# port
EXPOSE 3000
# runした時にapache起動
CMD ["httpd", "-D", "FOREGROUND"]
次にApacheとPHPの設定ファイルが必要です。
Apacheの設定ファイルを作成
Listen 3000 # Dockerfileで指定したポート番号に変更する
DocumentRoot "/var/www/html" # Dockerfileで指定したルートディレクトリ
PHPの設定ファイルを作成
extension_dir = "/usr/lib64/php/modules"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
[zend debugger]
zend_extension=/usr/lib64/php/modules/xdebug.so
[xdebug]
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_autostart=1
xdebug.remote_connect_back=0
xdebug.remote_host="host.docker.internal"
xdebug.remote_log=/tmp/xdebug.log
log_errors = On
error_log = /var/www/html/php_error.log
error_reporting = E_ALL
phpとxDebugの設定を加えています。 こちらも一度Dockerコンテナを立ち上げてファイルをコピーしてくると良いかと思います。
VSCodeの設定
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"pathMappings": {
"/var/www/html":"${workspaceRoot}/docker/html"
}
}
]
}
Dockerイメージをビルドする際のコマンドは docker-compose up -d
でOKです。
これでdocker-compose.ymlを元にビルドでき、完了後にはコンテナが2つ起動することになります。
Macをお使いの方はSequel ProなどでMySQLコンテナに接続する事が可能です。
この際の接続ホストは 127.0.0.1
にしましょう。
当初はDockerfileとdocker-composeってなに…?色々な方法があってややこしい。。と思っていた私ですが、ようやくdocker-composeの便利さを理解してきました。 Docker環境を構築するまでは大変ですが、慣れてくるとやっぱりDockerって便利だな〜と改めて思いました。