Dockerized Laravel App, всегда 404 на активы - PullRequest
0 голосов
/ 31 мая 2018

Итак, после долгих попыток мне удалось запустить приложение Laravel 5.6 через докер.Я создаю образ и храню его на Amazon ECR.Затем через docker-compose я загружаю Laravel, Nginx и некоторые другие.

Все работает отлично, кроме одной вещи.Все, что связано с активами, например css и js, не загружено (404).

Я пытался загрузить их с '/' впереди, я пытался с помощью функции assets (), но безрезультатно.

Итак, вот файлы, которые я использовал:

Dockerfile из приложения Laravel:

FROM php:7.1.15-fpm

RUN apt-get update && apt-get install -y libmcrypt-dev \
mysql-client zip unzip git libjpeg62-turbo-dev libpng12-dev libmagickwand-dev --no-install-recommends \
&& pecl install imagick \
&& docker-php-ext-enable imagick \
&& docker-php-ext-install gd mcrypt pdo_mysql \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd

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

COPY php-fpm.conf /etc/php-fpm.conf

COPY www.conf /etc/php-fpm.d/www.conf

WORKDIR /var/www

COPY . /var/www

RUN composer update

RUN chown -R www-data: /var/www

Это изображение отлично скомпоновано и хранится в Amazon.

Docker-составьте файл:

version: '2'
services:

  # The Laravel Application
  app:
    image: URL_TO_IMAGE-WORKS
    restart: always
    working_dir: /var/www
    volumes:
      - ./storage/app:/var/www/storage/app
      - ./storage/logs:/var/www/storage/logs
      - "./php-fpm.conf:/etc/php-fpm.conf"
      - "./www.conf:/etc/php-fpm.d/www.conf"
    links:
    - database
    environment:
      - "DB_PORT=3306"
      - "DB_HOST=database"

#The Nginx server
  proxy:
    build: server
    working_dir: /var/www
    restart: always
    volumes_from:
      - app
    ports:
      - "80:80"

  database:
    image: mysql:5.7.22
    volumes:
      - ./mysqldata_2:/var/lib/mysql
    restart: always
    environment:
      - "MYSQL_ROOT_PASSWORD=secret"
      - "MYSQL_DATABASE=secret"
      - "MYSQL_PASSWORD=secret"
      - "MYSQL_USER=secret"
    ports:
        - "33061:3306"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - database
    ports:
      - '8080:80'
    restart: always
    environment:
      PMA_HOST: database
      PMA_PORT: 3306

  elk:
    image: sebp/elk
    ports:
      - "5601:5601"
      - "9200:9200"
      - "5044:5044"

Файл Docker NGINX:

FROM nginx:alpine
RUN rm /etc/nginx/conf.d/*
COPY proxy.conf /etc/nginx/conf.d

Proxy.conf, используемый NGINX:

server {
    listen 80;
    server_name  admin.mydomain.com;
    include /etc/nginx/mime.types;
    index index.php server.php;
           root /var/www/public;

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

           location ~ \.php$ {
               fastcgi_split_path_info ^(.+\.php)(/.+)$;
               fastcgi_pass app:9000;
               fastcgi_index index.php;
               include fastcgi_params;
               fastcgi_param SCRIPT_FILENAME     $document_root$fastcgi_script_name;
               fastcgi_param PATH_INFO $fastcgi_path_info;
           }

   }

Итак, после запуска всехорошо, и я перехожу к функциональности admin.mydomain.com, но все нормально, но не загружаются ни файлы css, ни js.

Я перепробовал множество различных настроек, как на изображении докера, так и на настройках nginx, но нет.помогло.Мы будем благодарны за любые идеи!

Примечание: если вам понадобится дополнительная информация, пожалуйста, дайте мне знать

1 Ответ

0 голосов
/ 28 ноября 2018

У меня была эта проблема.

  • Я связал хранилище (php artisan storage:link) локально и убедился, что могу найти файлы через ls, находясь в контейнере.
  • Я убедился, что мой vhost.conf (используя apache) следовал за символическими ссылками.

  • Я проверил, включен ли at-mod_rewrite (a2enmod rewrite) в конце файла Docker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...