У меня есть веб-приложение, основанное на платформе Symfony.
У меня есть изображение php-fpm со всеми файлами php и активов.
Теперь я хочу обслуживать файлы черезконтейнер nginx.PHP-часть проста.Но как мне обслуживать статические файлы, включенные в образ php-fpm?
Я попытался создать том, который монтируется обоими контейнерами.Но после того, как docker скопировал файлы из образа в том после первого запуска, файлы больше не обновляются после обновления образа.
Я мог скопировать файлы после любого запуска контейнера из второго каталога.в том, чтобы решить эту проблему, но мне не нужны эти накладные расходы.
Есть ли у кого-нибудь хорошая идея, кому я могу поделиться статическими файлами, чтобы они могли обслуживаться непосредственно контейнером nginx?
Мой docker-compose:
version: '3'
services:
nginx:
image: nginx:1.15-alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./data/nginx:/etc/nginx/conf.d
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
- static-content:/var/www/app/web
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
php:
image: pbnl/scotoobo-php:dev
volumes:
- static-content:/var/www/app/web
environment:
- database_host=db
volumes:
static-content:
Мой Dockerfile
FROM php:7.1-fpm
RUN usermod -u 1000 www-data
RUN groupmod -g 1000 www-data
ENV APP_ENV=prod
ENV SYMFONY_ENV=prod
# install system basics
# install some php extensions
# install composer
WORKDIR /var/www/app
# copy the source code
COPY composer.* ./
COPY app app
COPY bin bin
COPY src src
COPY web web-tmp
# set up correct permissions to run the next composer commands
RUN mkdir var
RUN mkdir var/logs
RUN mkdir var/cache
RUN chown -R www-data:www-data /var/www/
RUN find /var/www/ -type d -exec chmod 775 "{}" \;
RUN find /var/www/ -type f -exec chmod 664 "{}" \;
RUN find /var/www -type d -exec chmod g+s "{}" \;
# generate the autoloaders and run composer scripts
USER www-data
RUN composer install --no-dev --optimize-autoloader --no-interaction --no-scripts