Как обслуживать файлы в nginx из другого докер-контейнераPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как обслуживать файлы в nginx из другого докер-контейнера

Сообщение Anonymous »

У меня есть проект Symfony 7, работающий с php-fpm 8.3 и nginx. Это файл Dockerfile, для обоих контейнеров (php и nginx) рабочий каталог — /app.
В настоящее время я загружаю файлы изображений в /app/public/ загружается, но файл загружается в контейнер php, и nginx не может его обслужить. Найдите файл /etc/nginx/default.conf.template, который используется в точке входа для запуска nginx в сочетании с командой envsubst '${APP_ENV} ${APP_DEBUG}'

Код: Выделить всё

#Dockerfile
FROM composer:2 as builder
WORKDIR /var/www
COPY composer.json composer.lock ./
ARG APP_ENV=dev
ENV composer_dev="composer install --no-interaction --optimize-autoloader --no-scripts"
ENV composer_prod="$composer_dev --no-dev"
RUN apk add zlib-dev libpng-dev && docker-php-ext-install gd && docker-php-ext-enable gd
RUN if [ "$APP_ENV" = "prod" ]; then $composer_prod; else $composer_dev; fi

FROM MyOwnTaggedImage:latest as php
COPY --link --from=builder --chown=nginx:www-data /var/www/vendor ./vendor
RUN bin/console tailwind:build --no-interaction && bin/console asset-map:compile && bin/console assets:install public
COPY docker/php/lunarlab.conf /usr/local/etc/php-fpm.d/lunarlab.conf
USER nginx

FROM nginx:alpine as nginx
WORKDIR /app
COPY docker/nginx/nginx.conf /etc/nginx/nginx.conf
COPY docker/nginx/conf.d/default.conf /etc/nginx/default.conf.template
COPY ./docker/nginx/entrypoint /usr/local/bin/entrypoint
COPY --link --from=php --chown=nginx:www-data /app/public public
RUN chmod +x /usr/local/bin/entrypoint
ENTRYPOINT ["/usr/local/bin/entrypoint"]

#docker-compose
version: '3'

services:
php:
image: lunarlab/app
build:
context: .
dockerfile: Dockerfile
target: php
args:
APP_ENV: ${APP_ENV:-dev}
environment:
APP_ENV: ${APP_ENV:-dev}
# You should definitely change the APP_SECRET in production
APP_SECRET: ${APP_SECRET:-!ChangeMe!}
DATABASE_URL: ${DATABASE_URL:-pgsql://${POSTGRES_USER:-app}:${POSTGRES_PASSWORD:-!ChangeMe!}@database:5432/${POSTGRES_DB:-app}}
EMAIL: ${EMAIL}
ADDRESS: ${ADDRESS}
TELEPHONE: ${TELEPHONE}
SESSION_LIFETIME: ${SESSION_LIFETIME:-3600}
MAILER_DSN: ${MAILER_DSN:-smtp://user:pass@mailer:1025}
volumes:
- ./assets:/app/assets
- ./config:/app/config
- ./migrations:/app/migrations
- ./templates:/app/templates
- ./src:/app/src
- ./translations:/app/translations
- ./docker/php/php.ini-development:/usr/local/etc/php/php.ini:ro

ports:
- 9000:9000
depends_on:
- database

nginx:
image: lunarlab/nginx
build:
context: .
dockerfile: Dockerfile
target: nginx
working_dir: /app
environment:
APP_ENV: ${APP_ENV:-dev}
ports:
- ${APP_PORT:-80}:80
# Before enabling mounting the public directory make sure to have in the local machine all the assets required by the application
# this can be achieved by running `bin/console asset-map:compile` and `bin/console tailwind:build`
volumes:
- ./docker/nginx/conf.d/default.conf:/etc/nginx/default.conf.template
links:
- php

#/etc/nginx/default.conf.template
upstream backend {
server php:9000;
}

server {

listen 80;
root /app/public;
index index.php;
server_name localhost en.localhost;
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;

#add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
#add_header Content-Security-Policy "default-src data:;";
add_header X-Permitted-Cross-Domain-Policies master-only;
add_header Referrer-Policy same-origin;
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';

client_body_timeout 12s;
client_header_timeout 12s;
client_max_body_size 100M;

#proxy_cache_path /app/public/uploads levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=30d use_temp_path=off;
server_tokens off;

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

location /uploads {
fastcgi_pass php:9000;
proxy_pass http://backend/public/uploads;
}

location ~ ^/index\.php(/|$) {
fastcgi_pass php:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param APP_ENV $APP_ENV;
fastcgi_param APP_DEBUG $APP_DEBUG;

proxy_hide_header X-Powered-By;

fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;

internal;
}

location ~ \.php$ {
return 404;
}

location ~* \.(?:ico|gif|jpe?g|png|htc|xml|otf|ttf|eot|woff|woff2|svg)$ {
expires 1d;
access_log off;
log_not_found off;
add_header Cache-Control private;
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 120s;
open_file_cache_min_uses 4;
open_file_cache_errors on;
}

location ~*  \.(css|js)$ {
expires 12h;
access_log on;
add_header Cache-Control public;
}

}
Я пытаюсь добиться этого с помощью обратного прокси, но не смог, буду признателен за любую помощь

Подробнее здесь: https://stackoverflow.com/questions/785 ... -container
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Nginx загружает файл вместо того, чтобы обслуживать файлы
    Гость » » в форуме Php
    0 Ответы
    71 Просмотры
    Последнее сообщение Гость
  • Nginx: как обслуживать статические файлы для специального пользователя
    Anonymous » » в форуме Php
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Как правильно обслуживать статические файлы через Nginx в моем проекте Django
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как обслуживать статические файлы Flask с помощью Nginx?
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Как обслуживать статические файлы Flask с помощью Nginx?
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»