Docker / Nginx / Symfony4: php modifications aren't displayed












0















I'm setting up a docker stack for a Symfony 4 application with Nginx and PHP 7. I need advice for my docker stack because i met one problem : every changes in a PHP file (a controller, a repository, an entity etc...) aren't displayed. Each time, i need to down ma docker stack and restart to see the changes, even for a simple dump().
I verified OPCache is enabled and configured like in Symfony documentation.
I think the problem is in my docker stack.



This is docker-compose.yml :



version: '2.2'
services:
# PHP
php:
build:
context: docker/php7-fpm
args:
TIMEZONE: ${TIMEZONE}
container_name: dso_php
volumes:
- ".:/var/www/myproject:rw,cached"
- "./docker/php7-fpm/www.conf:/usr/local/etc/php-fpm.d/www.conf"
- "./docker/php7-fpm/php.ini:/usr/local/etc/php/conf.d/030-custom.ini"
env_file:
- .env
working_dir: /var/www/myproject
# NGINX
nginx:
build:
context: docker/nginx
args:
NGINX_HOST: ${NGINX_HOST}
container_name: dso_nginx
ports:
- 80:80
depends_on:
- php
volumes:
- ".:/var/www/myproject:cached"
- ./logs/nginx/:/var/log/nginx
env_file:
- .env
environment:
- NGINX_HOST=${NGINX_HOST}


I build my own Dockerfile for PHP and Nginx:
First PHP, here the Dockerfile :



FROM php:7.2-fpm
MAINTAINER HamHamFonFon <balistik.fonfon@gmail.com>
USER root

# Utils
RUN apt-get update
&& apt-get upgrade -y
&& apt-get install -y curl less vim libpq-dev wget gnupg libicu-dev libpng-dev zlib1g-dev sudo wget
&& docker-php-ext-install mysqli
&& docker-php-ext-install pdo_mysql
&& docker-php-ext-install intl
&& docker-php-ext-install opcache
&& docker-php-ext-install zip
&& docker-php-ext-install gd

RUN apt-get install -y zip unzip

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
&& composer --version

# npm & node
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash
RUN apt-get install -y nodejs npm
&& update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
# build tools
RUN apt-get install -y build-essential

# yarn package manager
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

# Git
RUN apt-get install -y git

# bugfix: remove cmdtest to install yarn correctly.
RUN apt-get remove -y cmdtest
RUN apt-get update
RUN apt-get install -y yarn

# Clear archives in apt cache folder
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint

ENTRYPOINT ["docker-entrypoint"]


php.ini :



; General settings
date.timezone = Europe/Paris
xdebug.max_nesting_level=500
short_open_tag = Off
memory_limit="512M"

; Error reporting optimized for production (http://www.phptherightway.com/#error_reporting)
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php-app/error.log

apc.enable_cli = 1
# http://symfony.com/doc/current/performance.html
opcache.interned_strings_buffer = 16
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.validate_timestamps=0

; maximum memory allocated to store the results
realpath_cache_size=4096K
; save the results for 10 minutes (600 seconds)
realpath_cache_ttl=600


And www.conf (i have removed in this exemple all commented lines) :



[www]
user = site
listen = [::]:9000

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

php_admin_value[upload_max_filesize] = 50M
php_admin_value[post_max_size] = 50M


Now, for nginx :
First, Dockerfile :



FROM debian:jessie
ARG NGINX_HOST
MAINTAINER HamHamFonFon <balistik.fonfon@gmail.com>

# Install nginx
RUN apt-get update && apt-get install -y nginx

# Configure Nginx
ADD nginx.conf /etc/nginx/

ADD symfony.conf /etc/nginx/conf.d/
RUN sed "/server_name nginx_host;/c server_name ${NGINX_HOST};" -i /etc/nginx/conf.d/symfony.conf
RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf
RUN usermod -u 1000 www-data

# Run Nginx
CMD ["nginx"]
# Expose ports
EXPOSE 80


nginx.conf :



user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
worker_connections 2048;
multi_accept on;
use epoll;
}

http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 15;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log off;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
open_file_cache max=100;
client_body_temp_path /tmp 1 2;
client_body_buffer_size 256k;
client_body_in_file_only off;
}

daemon off;


And finally, symfony.conf :



server {
listen 80;
listen [::]:80;
server_name nginx_host;
client_max_body_size 20M;

root /var/www/deep-space-objects/public;

location / {
try_files $uri /index.php$is_args$args;
}

location ~ ^/(index).php(/|$) {
fastcgi_pass php-upstream;
fastcgi_split_path_info ^(.+.php)(/.*)$;

include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;

internal;
}

location ~ .php$ {
return 404;
}

error_log /var/log/nginx/symfony_error.log;
access_log /var/log/nginx/symfony_access.log;
}


In Dockerfile, the command "sed" replace "nginx_host" by the server name i declare in .env file.



My problem looks like this one : Docker with Symfony 4 - Unable to see the file changes but i have verified the OPCache configuration.
How can i check if nginx and php communicate ? Are there some badthings in my stack i can improve ?
Thank you, i don't know how to looking for.










share|improve this question























  • Start by setting realpath_cache_ttl to 0. EDIT: I'd also remove the :cached flags in your Docker Compose file.

    – MrSaints
    Jan 2 at 16:18













  • Okay, i'm trying this. I need to remove ":cached" in two containers or only in one ?

    – Hamham
    Jan 2 at 16:29











  • I'd remove it in all to start with, so :rw,cached as well.

    – MrSaints
    Jan 2 at 16:30











  • Problem always here, but it seems problem come from container PHP because when i make a change, i need to restart only PHP container. Maybe nginx can't communicate correctly with php-fpm ?

    – Hamham
    Jan 2 at 16:39











  • I'm assuming this is with the cache changes I recommended too? If so, let's rule a few things out. Try running the PHP container WITHOUT the code being mounted. And I would try it WITH the code mounted, but without the extra config file you mounted. I believe the defaults should work fine.

    – MrSaints
    Jan 2 at 16:42
















0















I'm setting up a docker stack for a Symfony 4 application with Nginx and PHP 7. I need advice for my docker stack because i met one problem : every changes in a PHP file (a controller, a repository, an entity etc...) aren't displayed. Each time, i need to down ma docker stack and restart to see the changes, even for a simple dump().
I verified OPCache is enabled and configured like in Symfony documentation.
I think the problem is in my docker stack.



This is docker-compose.yml :



version: '2.2'
services:
# PHP
php:
build:
context: docker/php7-fpm
args:
TIMEZONE: ${TIMEZONE}
container_name: dso_php
volumes:
- ".:/var/www/myproject:rw,cached"
- "./docker/php7-fpm/www.conf:/usr/local/etc/php-fpm.d/www.conf"
- "./docker/php7-fpm/php.ini:/usr/local/etc/php/conf.d/030-custom.ini"
env_file:
- .env
working_dir: /var/www/myproject
# NGINX
nginx:
build:
context: docker/nginx
args:
NGINX_HOST: ${NGINX_HOST}
container_name: dso_nginx
ports:
- 80:80
depends_on:
- php
volumes:
- ".:/var/www/myproject:cached"
- ./logs/nginx/:/var/log/nginx
env_file:
- .env
environment:
- NGINX_HOST=${NGINX_HOST}


I build my own Dockerfile for PHP and Nginx:
First PHP, here the Dockerfile :



FROM php:7.2-fpm
MAINTAINER HamHamFonFon <balistik.fonfon@gmail.com>
USER root

# Utils
RUN apt-get update
&& apt-get upgrade -y
&& apt-get install -y curl less vim libpq-dev wget gnupg libicu-dev libpng-dev zlib1g-dev sudo wget
&& docker-php-ext-install mysqli
&& docker-php-ext-install pdo_mysql
&& docker-php-ext-install intl
&& docker-php-ext-install opcache
&& docker-php-ext-install zip
&& docker-php-ext-install gd

RUN apt-get install -y zip unzip

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
&& composer --version

# npm & node
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash
RUN apt-get install -y nodejs npm
&& update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
# build tools
RUN apt-get install -y build-essential

# yarn package manager
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

# Git
RUN apt-get install -y git

# bugfix: remove cmdtest to install yarn correctly.
RUN apt-get remove -y cmdtest
RUN apt-get update
RUN apt-get install -y yarn

# Clear archives in apt cache folder
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint

ENTRYPOINT ["docker-entrypoint"]


php.ini :



; General settings
date.timezone = Europe/Paris
xdebug.max_nesting_level=500
short_open_tag = Off
memory_limit="512M"

; Error reporting optimized for production (http://www.phptherightway.com/#error_reporting)
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php-app/error.log

apc.enable_cli = 1
# http://symfony.com/doc/current/performance.html
opcache.interned_strings_buffer = 16
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.validate_timestamps=0

; maximum memory allocated to store the results
realpath_cache_size=4096K
; save the results for 10 minutes (600 seconds)
realpath_cache_ttl=600


And www.conf (i have removed in this exemple all commented lines) :



[www]
user = site
listen = [::]:9000

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

php_admin_value[upload_max_filesize] = 50M
php_admin_value[post_max_size] = 50M


Now, for nginx :
First, Dockerfile :



FROM debian:jessie
ARG NGINX_HOST
MAINTAINER HamHamFonFon <balistik.fonfon@gmail.com>

# Install nginx
RUN apt-get update && apt-get install -y nginx

# Configure Nginx
ADD nginx.conf /etc/nginx/

ADD symfony.conf /etc/nginx/conf.d/
RUN sed "/server_name nginx_host;/c server_name ${NGINX_HOST};" -i /etc/nginx/conf.d/symfony.conf
RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf
RUN usermod -u 1000 www-data

# Run Nginx
CMD ["nginx"]
# Expose ports
EXPOSE 80


nginx.conf :



user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
worker_connections 2048;
multi_accept on;
use epoll;
}

http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 15;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log off;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
open_file_cache max=100;
client_body_temp_path /tmp 1 2;
client_body_buffer_size 256k;
client_body_in_file_only off;
}

daemon off;


And finally, symfony.conf :



server {
listen 80;
listen [::]:80;
server_name nginx_host;
client_max_body_size 20M;

root /var/www/deep-space-objects/public;

location / {
try_files $uri /index.php$is_args$args;
}

location ~ ^/(index).php(/|$) {
fastcgi_pass php-upstream;
fastcgi_split_path_info ^(.+.php)(/.*)$;

include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;

internal;
}

location ~ .php$ {
return 404;
}

error_log /var/log/nginx/symfony_error.log;
access_log /var/log/nginx/symfony_access.log;
}


In Dockerfile, the command "sed" replace "nginx_host" by the server name i declare in .env file.



My problem looks like this one : Docker with Symfony 4 - Unable to see the file changes but i have verified the OPCache configuration.
How can i check if nginx and php communicate ? Are there some badthings in my stack i can improve ?
Thank you, i don't know how to looking for.










share|improve this question























  • Start by setting realpath_cache_ttl to 0. EDIT: I'd also remove the :cached flags in your Docker Compose file.

    – MrSaints
    Jan 2 at 16:18













  • Okay, i'm trying this. I need to remove ":cached" in two containers or only in one ?

    – Hamham
    Jan 2 at 16:29











  • I'd remove it in all to start with, so :rw,cached as well.

    – MrSaints
    Jan 2 at 16:30











  • Problem always here, but it seems problem come from container PHP because when i make a change, i need to restart only PHP container. Maybe nginx can't communicate correctly with php-fpm ?

    – Hamham
    Jan 2 at 16:39











  • I'm assuming this is with the cache changes I recommended too? If so, let's rule a few things out. Try running the PHP container WITHOUT the code being mounted. And I would try it WITH the code mounted, but without the extra config file you mounted. I believe the defaults should work fine.

    – MrSaints
    Jan 2 at 16:42














0












0








0








I'm setting up a docker stack for a Symfony 4 application with Nginx and PHP 7. I need advice for my docker stack because i met one problem : every changes in a PHP file (a controller, a repository, an entity etc...) aren't displayed. Each time, i need to down ma docker stack and restart to see the changes, even for a simple dump().
I verified OPCache is enabled and configured like in Symfony documentation.
I think the problem is in my docker stack.



This is docker-compose.yml :



version: '2.2'
services:
# PHP
php:
build:
context: docker/php7-fpm
args:
TIMEZONE: ${TIMEZONE}
container_name: dso_php
volumes:
- ".:/var/www/myproject:rw,cached"
- "./docker/php7-fpm/www.conf:/usr/local/etc/php-fpm.d/www.conf"
- "./docker/php7-fpm/php.ini:/usr/local/etc/php/conf.d/030-custom.ini"
env_file:
- .env
working_dir: /var/www/myproject
# NGINX
nginx:
build:
context: docker/nginx
args:
NGINX_HOST: ${NGINX_HOST}
container_name: dso_nginx
ports:
- 80:80
depends_on:
- php
volumes:
- ".:/var/www/myproject:cached"
- ./logs/nginx/:/var/log/nginx
env_file:
- .env
environment:
- NGINX_HOST=${NGINX_HOST}


I build my own Dockerfile for PHP and Nginx:
First PHP, here the Dockerfile :



FROM php:7.2-fpm
MAINTAINER HamHamFonFon <balistik.fonfon@gmail.com>
USER root

# Utils
RUN apt-get update
&& apt-get upgrade -y
&& apt-get install -y curl less vim libpq-dev wget gnupg libicu-dev libpng-dev zlib1g-dev sudo wget
&& docker-php-ext-install mysqli
&& docker-php-ext-install pdo_mysql
&& docker-php-ext-install intl
&& docker-php-ext-install opcache
&& docker-php-ext-install zip
&& docker-php-ext-install gd

RUN apt-get install -y zip unzip

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
&& composer --version

# npm & node
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash
RUN apt-get install -y nodejs npm
&& update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
# build tools
RUN apt-get install -y build-essential

# yarn package manager
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

# Git
RUN apt-get install -y git

# bugfix: remove cmdtest to install yarn correctly.
RUN apt-get remove -y cmdtest
RUN apt-get update
RUN apt-get install -y yarn

# Clear archives in apt cache folder
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint

ENTRYPOINT ["docker-entrypoint"]


php.ini :



; General settings
date.timezone = Europe/Paris
xdebug.max_nesting_level=500
short_open_tag = Off
memory_limit="512M"

; Error reporting optimized for production (http://www.phptherightway.com/#error_reporting)
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php-app/error.log

apc.enable_cli = 1
# http://symfony.com/doc/current/performance.html
opcache.interned_strings_buffer = 16
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.validate_timestamps=0

; maximum memory allocated to store the results
realpath_cache_size=4096K
; save the results for 10 minutes (600 seconds)
realpath_cache_ttl=600


And www.conf (i have removed in this exemple all commented lines) :



[www]
user = site
listen = [::]:9000

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

php_admin_value[upload_max_filesize] = 50M
php_admin_value[post_max_size] = 50M


Now, for nginx :
First, Dockerfile :



FROM debian:jessie
ARG NGINX_HOST
MAINTAINER HamHamFonFon <balistik.fonfon@gmail.com>

# Install nginx
RUN apt-get update && apt-get install -y nginx

# Configure Nginx
ADD nginx.conf /etc/nginx/

ADD symfony.conf /etc/nginx/conf.d/
RUN sed "/server_name nginx_host;/c server_name ${NGINX_HOST};" -i /etc/nginx/conf.d/symfony.conf
RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf
RUN usermod -u 1000 www-data

# Run Nginx
CMD ["nginx"]
# Expose ports
EXPOSE 80


nginx.conf :



user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
worker_connections 2048;
multi_accept on;
use epoll;
}

http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 15;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log off;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
open_file_cache max=100;
client_body_temp_path /tmp 1 2;
client_body_buffer_size 256k;
client_body_in_file_only off;
}

daemon off;


And finally, symfony.conf :



server {
listen 80;
listen [::]:80;
server_name nginx_host;
client_max_body_size 20M;

root /var/www/deep-space-objects/public;

location / {
try_files $uri /index.php$is_args$args;
}

location ~ ^/(index).php(/|$) {
fastcgi_pass php-upstream;
fastcgi_split_path_info ^(.+.php)(/.*)$;

include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;

internal;
}

location ~ .php$ {
return 404;
}

error_log /var/log/nginx/symfony_error.log;
access_log /var/log/nginx/symfony_access.log;
}


In Dockerfile, the command "sed" replace "nginx_host" by the server name i declare in .env file.



My problem looks like this one : Docker with Symfony 4 - Unable to see the file changes but i have verified the OPCache configuration.
How can i check if nginx and php communicate ? Are there some badthings in my stack i can improve ?
Thank you, i don't know how to looking for.










share|improve this question














I'm setting up a docker stack for a Symfony 4 application with Nginx and PHP 7. I need advice for my docker stack because i met one problem : every changes in a PHP file (a controller, a repository, an entity etc...) aren't displayed. Each time, i need to down ma docker stack and restart to see the changes, even for a simple dump().
I verified OPCache is enabled and configured like in Symfony documentation.
I think the problem is in my docker stack.



This is docker-compose.yml :



version: '2.2'
services:
# PHP
php:
build:
context: docker/php7-fpm
args:
TIMEZONE: ${TIMEZONE}
container_name: dso_php
volumes:
- ".:/var/www/myproject:rw,cached"
- "./docker/php7-fpm/www.conf:/usr/local/etc/php-fpm.d/www.conf"
- "./docker/php7-fpm/php.ini:/usr/local/etc/php/conf.d/030-custom.ini"
env_file:
- .env
working_dir: /var/www/myproject
# NGINX
nginx:
build:
context: docker/nginx
args:
NGINX_HOST: ${NGINX_HOST}
container_name: dso_nginx
ports:
- 80:80
depends_on:
- php
volumes:
- ".:/var/www/myproject:cached"
- ./logs/nginx/:/var/log/nginx
env_file:
- .env
environment:
- NGINX_HOST=${NGINX_HOST}


I build my own Dockerfile for PHP and Nginx:
First PHP, here the Dockerfile :



FROM php:7.2-fpm
MAINTAINER HamHamFonFon <balistik.fonfon@gmail.com>
USER root

# Utils
RUN apt-get update
&& apt-get upgrade -y
&& apt-get install -y curl less vim libpq-dev wget gnupg libicu-dev libpng-dev zlib1g-dev sudo wget
&& docker-php-ext-install mysqli
&& docker-php-ext-install pdo_mysql
&& docker-php-ext-install intl
&& docker-php-ext-install opcache
&& docker-php-ext-install zip
&& docker-php-ext-install gd

RUN apt-get install -y zip unzip

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
&& composer --version

# npm & node
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash
RUN apt-get install -y nodejs npm
&& update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
# build tools
RUN apt-get install -y build-essential

# yarn package manager
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list

# Git
RUN apt-get install -y git

# bugfix: remove cmdtest to install yarn correctly.
RUN apt-get remove -y cmdtest
RUN apt-get update
RUN apt-get install -y yarn

# Clear archives in apt cache folder
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint

ENTRYPOINT ["docker-entrypoint"]


php.ini :



; General settings
date.timezone = Europe/Paris
xdebug.max_nesting_level=500
short_open_tag = Off
memory_limit="512M"

; Error reporting optimized for production (http://www.phptherightway.com/#error_reporting)
display_errors = Off
display_startup_errors = Off
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php-app/error.log

apc.enable_cli = 1
# http://symfony.com/doc/current/performance.html
opcache.interned_strings_buffer = 16
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.validate_timestamps=0

; maximum memory allocated to store the results
realpath_cache_size=4096K
; save the results for 10 minutes (600 seconds)
realpath_cache_ttl=600


And www.conf (i have removed in this exemple all commented lines) :



[www]
user = site
listen = [::]:9000

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

php_admin_value[upload_max_filesize] = 50M
php_admin_value[post_max_size] = 50M


Now, for nginx :
First, Dockerfile :



FROM debian:jessie
ARG NGINX_HOST
MAINTAINER HamHamFonFon <balistik.fonfon@gmail.com>

# Install nginx
RUN apt-get update && apt-get install -y nginx

# Configure Nginx
ADD nginx.conf /etc/nginx/

ADD symfony.conf /etc/nginx/conf.d/
RUN sed "/server_name nginx_host;/c server_name ${NGINX_HOST};" -i /etc/nginx/conf.d/symfony.conf
RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf
RUN usermod -u 1000 www-data

# Run Nginx
CMD ["nginx"]
# Expose ports
EXPOSE 80


nginx.conf :



user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
worker_connections 2048;
multi_accept on;
use epoll;
}

http {
server_tokens off;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 15;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log off;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
open_file_cache max=100;
client_body_temp_path /tmp 1 2;
client_body_buffer_size 256k;
client_body_in_file_only off;
}

daemon off;


And finally, symfony.conf :



server {
listen 80;
listen [::]:80;
server_name nginx_host;
client_max_body_size 20M;

root /var/www/deep-space-objects/public;

location / {
try_files $uri /index.php$is_args$args;
}

location ~ ^/(index).php(/|$) {
fastcgi_pass php-upstream;
fastcgi_split_path_info ^(.+.php)(/.*)$;

include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;

internal;
}

location ~ .php$ {
return 404;
}

error_log /var/log/nginx/symfony_error.log;
access_log /var/log/nginx/symfony_access.log;
}


In Dockerfile, the command "sed" replace "nginx_host" by the server name i declare in .env file.



My problem looks like this one : Docker with Symfony 4 - Unable to see the file changes but i have verified the OPCache configuration.
How can i check if nginx and php communicate ? Are there some badthings in my stack i can improve ?
Thank you, i don't know how to looking for.







docker nginx symfony4






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 2 at 15:17









HamhamHamham

146




146













  • Start by setting realpath_cache_ttl to 0. EDIT: I'd also remove the :cached flags in your Docker Compose file.

    – MrSaints
    Jan 2 at 16:18













  • Okay, i'm trying this. I need to remove ":cached" in two containers or only in one ?

    – Hamham
    Jan 2 at 16:29











  • I'd remove it in all to start with, so :rw,cached as well.

    – MrSaints
    Jan 2 at 16:30











  • Problem always here, but it seems problem come from container PHP because when i make a change, i need to restart only PHP container. Maybe nginx can't communicate correctly with php-fpm ?

    – Hamham
    Jan 2 at 16:39











  • I'm assuming this is with the cache changes I recommended too? If so, let's rule a few things out. Try running the PHP container WITHOUT the code being mounted. And I would try it WITH the code mounted, but without the extra config file you mounted. I believe the defaults should work fine.

    – MrSaints
    Jan 2 at 16:42



















  • Start by setting realpath_cache_ttl to 0. EDIT: I'd also remove the :cached flags in your Docker Compose file.

    – MrSaints
    Jan 2 at 16:18













  • Okay, i'm trying this. I need to remove ":cached" in two containers or only in one ?

    – Hamham
    Jan 2 at 16:29











  • I'd remove it in all to start with, so :rw,cached as well.

    – MrSaints
    Jan 2 at 16:30











  • Problem always here, but it seems problem come from container PHP because when i make a change, i need to restart only PHP container. Maybe nginx can't communicate correctly with php-fpm ?

    – Hamham
    Jan 2 at 16:39











  • I'm assuming this is with the cache changes I recommended too? If so, let's rule a few things out. Try running the PHP container WITHOUT the code being mounted. And I would try it WITH the code mounted, but without the extra config file you mounted. I believe the defaults should work fine.

    – MrSaints
    Jan 2 at 16:42

















Start by setting realpath_cache_ttl to 0. EDIT: I'd also remove the :cached flags in your Docker Compose file.

– MrSaints
Jan 2 at 16:18







Start by setting realpath_cache_ttl to 0. EDIT: I'd also remove the :cached flags in your Docker Compose file.

– MrSaints
Jan 2 at 16:18















Okay, i'm trying this. I need to remove ":cached" in two containers or only in one ?

– Hamham
Jan 2 at 16:29





Okay, i'm trying this. I need to remove ":cached" in two containers or only in one ?

– Hamham
Jan 2 at 16:29













I'd remove it in all to start with, so :rw,cached as well.

– MrSaints
Jan 2 at 16:30





I'd remove it in all to start with, so :rw,cached as well.

– MrSaints
Jan 2 at 16:30













Problem always here, but it seems problem come from container PHP because when i make a change, i need to restart only PHP container. Maybe nginx can't communicate correctly with php-fpm ?

– Hamham
Jan 2 at 16:39





Problem always here, but it seems problem come from container PHP because when i make a change, i need to restart only PHP container. Maybe nginx can't communicate correctly with php-fpm ?

– Hamham
Jan 2 at 16:39













I'm assuming this is with the cache changes I recommended too? If so, let's rule a few things out. Try running the PHP container WITHOUT the code being mounted. And I would try it WITH the code mounted, but without the extra config file you mounted. I believe the defaults should work fine.

– MrSaints
Jan 2 at 16:42





I'm assuming this is with the cache changes I recommended too? If so, let's rule a few things out. Try running the PHP container WITHOUT the code being mounted. And I would try it WITH the code mounted, but without the extra config file you mounted. I believe the defaults should work fine.

– MrSaints
Jan 2 at 16:42












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54008810%2fdocker-nginx-symfony4-php-modifications-arent-displayed%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54008810%2fdocker-nginx-symfony4-php-modifications-arent-displayed%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

Npm cannot find a required file even through it is in the searched directory