🐳

【Docker】CentOS6 + php5.6 + xDebug + VSCodeの開発環境を作る

古い社内ツールをDockerを使い、CentOS6 + php5.6 + xDebug + VSCodeでローカル開発環境をつくってみた時のメモです。

Dockerfileを作成

Dockerfile
# どのイメージを基本にするか
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、xDebugなど必要なものをインストールすることができます。

Apacheの設定ファイルを作成

httpd.conf
Listen 3000 # Dockerfileで指定したポート番号に変更する
DocumentRoot "/var/www/html" # Dockerfileで指定したルートディレクトリ

httpd.confファイルは記述が長いので割愛しますが、上記部分を確認しましょう。 ファイル自体は一度Dockerコンテナを起動させてコンテナ内のhttpd.confをコピーするのが良いかと思います。

PHPの設定ファイルを作成

php.ini
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の設定

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9000,
            "pathMappings": {
                "/var/www/html":"${workspaceRoot}/docker/html"
            }
        }
    ]
}

pathMappingsでローカルのルートディレクトリパスを設定しましょう。 私はxDebugのデバッグが上手くいかずに大苦戦しました。 ひとまずこれでDockerを使ってVSCodeでデバッグしながら開発することができました。 Docker難しい!

零細CEO兼プログラマー投資家ピアニスト。老後は曾孫達の前でグランドピアノをエレガントに弾きこなしドヤって逝くのを夢みるフルータリアンな人。とっても冷え性。Next.js+microCMS, React Native+Expo, Firebase, TailwindCSS #XRP

© 2021, Ru- All rights reserved.