Salut,
J'ai un environnement de developpement php basé sur docker.
Je suis en train de me mettre a travailler avec les ide Jetbrain et donc PhpStorm.
Voici la liste des conteneurs:
Je suis sous linux, Fedora 23 pour etre plus précis.
Le soucis est que je ne sais absolument pas comment faire fonctionner xdebug par exemple dans ce cas de figure.
Xdebug est pourtant installé dans le conteneur php-fpm.
Merci d'avance à tous ceux qui seront en mesure de m'eclairer.
Bien cordialement,
Cavalor
Il suffit d'ajouter un port dans le container php-fpm, celui de xdebug, comme celui déjà présent (normalement, je ne voit pas jusqu'à là, le visionneur de code n'étant pas adapté au mobile).
J'ai réglé le problème, en fait je faisait le mapping entre le port 9000 de mon conteneur php-fpm et celui de ma machine hote.
Il a suffit que je retire ce mapping et xdebug demare comme souhaité.
Merci tout de même pour ton temps et ta contribution @tleb
Salut,
Tu pourrais nous dire exactement quels containers tu utilisent ? En particulier celui php-fpm ?
Yep voila mes containers:
php-fpm
FROM debian:jessie
MAINTAINER cavalor <max.cavalor@gmail.com>
RUN groupmod -g 1000 www-data && \
usermod -u 1000 www-data
RUN apt-get update -y && \
apt-get install -y \
php5-fpm \
php5-curl \
php5-gd \
php5-geoip \
php5-imagick \
php5-imap \
php5-json \
php5-ldap \
php5-mcrypt \
php5-memcache \
php5-memcached \
php5-mongo \
php5-mysqlnd \
php5-pgsql \
php5-redis \
php5-sqlite \
php5-xdebug \
php5-xcache
# Configure PHP-FPM
RUN sed -i "s/;date.timezone =.*/date.timezone = GMT/" /etc/php5/fpm/php.ini && \
sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/" /etc/php5/fpm/php.ini && \
sed -i "s/display_errors = Off/display_errors = stderr/" /etc/php5/fpm/php.ini && \
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 128M/" /etc/php5/fpm/php.ini && \
sed -i "s/;opcache.enable=0/opcache.enable=1/" /etc/php5/fpm/php.ini && \
sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php5/fpm/php-fpm.conf && \
sed -i '/^listen = /clisten = 9000' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^listen.allowed_clients/c;listen.allowed_clients =' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;catch_workers_output/ccatch_workers_output = yes' /etc/php5/fpm/pool.d/www.conf && \
sed -i '/^;env\[TEMP\] = .*/aenv[MYSQL_PORT_3306_TCP_ADDR] = $MYSQL_PORT_3306_TCP_ADDR' /etc/php5/fpm/pool.d/www.conf
# Add configuration files
ADD php.ini /etc/php5/fpm/conf.d/40-custom.ini
EXPOSE 9000
ENTRYPOINT ["/usr/sbin/php5-fpm", "-F"]
avec son fichier de conf
; Enable XDebug
zend_extension = xdebug.so
; XDebug configuration
xdebug.remote_enable=1
xdebug.profiler_enable=0
xdebug.max_nesting_level = 1000
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir = "/var/log"
artisan
FROM debian:jessie
MAINTAINER cavalor <max.cavalor@gmail.com>
WORKDIR /tmp
RUN groupmod -g 1000 www-data && \
usermod -u 1000 www-data
RUN apt-get update -y && \
apt-get install -y \
php5-cli \
php5-mcrypt \
php5-mongo \
php5-mssql \
php5-mysqlnd \
php5-pgsql \
php5-redis \
php5-sqlite \
php5-gd
WORKDIR /var/www/row.sh
ENTRYPOINT ["php", "artisan"]
CMD ["--help"]
composer
FROM debian:jessie
MAINTAINER cavalor <max.cavalor@gmail.com>
WORKDIR /tmp
RUN groupmod -g 1000 www-data && \
usermod -u 1000 www-data
RUN apt-get update -y && \
apt-get install -y \
curl \
wget \
php5-cli \
php5-mcrypt \
php5-fpm \
php5-curl
RUN curl -sS https://getcomposer.org/installer | php && \
mv composer.phar /usr/local/bin/composer && \
composer self-update
RUN mkdir /var/www && \
chgrp www-data /var/www
WORKDIR /var/www/row.sh
USER www-data
ENTRYPOINT ["composer"]
CMD ["--help"]
Et pour info j'utilise docker-compose pour orchestrer tout ca
En théorie, il suffit "d'ouvrir" le port (rediriger le port x interne vers le port x externe, plus précisément) qu'utilise xdebug sur le container et se connecter avec ton client là dessus.
Bonjour
@tleb, oui je suis d'accord avec cette idée, cela me semble juste, il faut que j'arrive a mettre ça en place dans la configuration de PhpStorm.
Je rajoute le docker-compose afin de vous aider a compredndre la chose. Merci en tous cas pour le coup de main
###
# xxx build
###
# app data containers
data_app:
image: busybox
volumes:
- /home/max/Sites/app_dir:/var/www/app_dir
# mysql data container
data_mysql:
image: busybox
volumes:
- /home/max/Docker/dev/data_mysql:/var/lib/mysql
# mysql server
mysql:
image: mysql
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=xxx
- MYSQL_DATABASE=xxx
- MYSQL_USER=xxx
- MYSQL_PASSWORD=xxx
volumes_from:
- data_mysql
# memcached
memcached:
image: memcached
ports:
- 11211:11211
# php-fpm worker
php:
build: docker/php-fpm
ports:
- 9000:9000
links:
- mysql:mysql
- memcached:memcached
volumes_from:
- data_app
# nginx web server
nginx:
build: docker/nginx
ports:
- 80:80
- 443:443
links:
- php:php
volumes_from:
- data_app
# laravel artisan
artisan:
build: docker/artisan
links:
- mysql:mysql
- memcached:memcached
volumes_from:
- data_app
# composer
composer:
build: docker/composer
volumes_from:
- data_app
Bien cordialement,
Cavalor
il faut que j'arrive a mettre ça en place dans la configuration de PhpStorm
On peut rien faire pour t'aider là. Il suffit que tu récupères l'IP que docker te donne et tu la rentres dans la config de PhpStorm, dans la section xdebug.
Oublie pas d'EXPOSE le port de xdebug dans ton container php-fpm et d'ajouter le port dans le docker-compose.
Justement c’était parce que le port était mappé dans mon docker-composer que cela ne fonctionnait pas ;)
Il suffit de configurer PhpStorm en lui donnant le point d'entrée du serveur, cad le frontal nginx.