My problem is as the title says, whatever change i make in a file the browser won't display it if i'm not rebuilding the image.I used sh to watch if the changes do exist inside the container and yes, they do.
I'm using docker-compose:
version: '3.7'
services:
postgres:
image: postgres:alpine
restart: always
environment:
POSTGRES_DB: db
POSTGRES_USER: root
POSTGRES_PASSWORD: pw123
php:
build:
context: .
dockerfile: ./docker/php/Dockerfile
restart: always
env_file:
- ./app/.env
user: 1000:1000
nginx:
image: nginx:1.15.3-alpine
restart: always
volumes:
- ./app:/usr/src/app
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- 80:80
depends_on:
- php
Here is my php service dockerfile:
# ./docker/php/Dockerfile
FROM php:7-fpm-alpine
RUN apk update && apk add build-base
RUN apk add postgresql postgresql-dev \
&& docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
&& docker-php-ext-install pdo pdo_pgsql pgsql
#RUN docker-php-ext-install opcache
#RUN curl -o /tmp/composer-setup.php https://getcomposer.org/installer \
#&& curl -o /tmp/composer-setup.sig https://composer.github.io/installer.sig \
# Make sure we're installing what we think we're installing!
#&& php -r "if (hash('SHA384', file_get_contents('/tmp/composer-setup.php')) !== trim(file_get_contents('/tmp/composer-setup.sig'))) { unlink('/tmp/composer-setup.php'); echo 'Invalid installer' . PHP_EOL; exit(1); }" \
#&& php /tmp/composer-setup.php --no-ansi --install-dir=/usr/local/bin --filename=composer --snapshot \
#&& rm -f /tmp/composer-setup.*
COPY docker/php/opcache.ini /usr/local/etc/php/conf.d/opcache.ini
COPY app /usr/src/app
WORKDIR /usr/src/app
#install usermod
#RUN echo http://dl-2.alpinelinux.org/alpine/edge/community/ >> /etc/apk/repositories
#RUN apk --no-cache add shadow && usermod -u 1000 www-data
#RUN composer install --no-plugins --no-scripts
#ENV PATH="~/.composer/vendor/bin:./vendor/bin:${PATH}"
#RUN usermod -u 1000 www-data
#RUN chown -R www-data:www-data /var/cache
#RUN chown -R www-data:www-data /var/log
EXPOSE 9000
CMD ["php-fpm","--nodaemonize"]
It might not be a problem with docker, since i have basic understanding of web servers(nginx), php fpm, opcache one of those might create the problem so i'll post other conf files:
default.conf for nginx:
# ./docker/nginx/default.conf
server {
server_name ~.*;
location / {
root /usr/src/app;
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
client_max_body_size 50m;
fastcgi_pass php:9000;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/src/app/public/index.php;
}
error_log /dev/stderr debug;
access_log /dev/stdout;
}
opcache.ini:
[opcache]
opcache.enable=1
; 0 means it will check on every request
; 0 is irrelevant if opcache.validate_timestamps=0 which is desirable in production
opcache.revalidate_freq=0
opcache.validate_timestamps=1
opcache.max_accelerated_files=10000
opcache.memory_consumption=192
opcache.max_wasted_percentage=10
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1