php - 如何通过 nginx 图像从 php-fpm 图像服务器静态文件
问题描述
我有一个基于 Symfony 框架的网络应用程序。
我有一个包含所有 php 和资产文件的 php-fpm 图像。
现在我想通过 nginx 容器提供文件。php部分很简单。但是我怎样才能提供包含在 php-fpm 图像中的静态文件呢?
我试图创建一个由两个容器安装的卷。但是在docker第一次启动后将图像中的文件复制到卷中后,在我更新图像后文件不再更新。
我可以在容器的任何启动后将文件从第二个目录复制到卷中以解决这个问题,但我不想要这个开销。
有没有人知道我可以共享静态文件以便它们可以直接由 nginx 容器提供服务?
我的码头工人撰写:
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
解决方案
推荐阅读
- reactjs - 如何使用 react-bootstrap 在轮播中添加视频?
- php - 限制从网络浏览器访问文件夹,但只能通过我的网站访问
- javascript - 将属性的 JSON 字符串解析为多个发送到同一端点
- php - 从 txt 文件中的字符串中删除行
- google-apps-script - 如何将值推送到列 Google Sheets App Script
- android - Android Studio 模拟器不再响应
- kubernetes - Kubernetes MLflow 服务 Pod 连接
- javascript - 如何确定数组中一定数量的对象是否在JS中包含具有相同值的相同属性
- groovy - 如何从 Jenkinsfile(管道)运行 Groovy 构建后脚本?
- paypal - 如何创建 Paypal 开发者帐户(不是沙盒)