У меня есть приложение Laravel, использующее тему Metronic. В рамках темы у них есть собственная реализация BlockUI. Я использую это в течение многих лет без проблем. Когда приложение работает на «голом железе», все работает так, как ожидалось.
Однако, когда я делаю Dockerize приложение, все работает нормально, но я замечаю, что к элементам BlockUI применяется дополнительный атрибут opacity
. И не только это, но и на всех страницах, кроме одной.
Вот как это должно выглядеть (голая версия):
Как видите, он затемняет DataTable и выводит окно Please wait... при выполнении AJAX-запроса.
Вот та же самая страница, но внутри контейнера Docker:
В этом случае поле «Подождите...» едва видно, потому что ему присвоена непрозрачность около 0,1, и вы даже не можете сказать, что DataTable вообще была затемнена.
Как я могу отследить, откуда это исходит? Это происходит только тогда, когда одно и то же приложение (без изменений) запускается из контейнера Docker и на всех страницах, кроме одной. (Страница «Заказы по типу печати» работает нормально. Не знаю, почему.)
Вот Dockerfile, на случай, если это как-то связано с этим:
FROM php:apache
# Arguments defined in docker-compose.yml
ARG user
ARG uid
# Set our application folder as an environment variable
ENV APP_HOME /var/www/html
# Set working directory
WORKDIR $APP_HOME
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# Copy over project-specific PHP settings
COPY ./docker-config/php/local.ini /usr/local/etc/php/conf.d/local.ini
# Get NodeJS
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash -
# Install all the system dependencies and enable PHP modules
RUN apt-get update && apt-get install -y \
libicu-dev \
libpq-dev \
libmcrypt-dev \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
git \
libzip-dev \
zip \
unzip \
nodejs \
build-essential \
&& rm -r /var/lib/apt/lists/* \
&& docker-php-ext-configure pdo_mysql \
--with-pdo-mysql=mysqlnd \
&& docker-php-ext-configure gd \
--enable-gd \
--with-freetype=/usr/include/ \
--with-jpeg=/usr/include/ \
&& docker-php-ext-install \
intl \
pcntl \
pdo_mysql \
pdo_pgsql \
pgsql \
zip \
opcache \
gd \
&& pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis
# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer
# Change uid and gid of apache to docker user uid/gid
RUN usermod -u $uid $user && groupmod -g $uid $user
# Copy existing application directory + permissions
COPY --chown=www-data:www-data . $APP_HOME
# Change the web_root to laravel /var/www/html/public folder
RUN sed -i -e "s/html/html\/public/g" /etc/apache2/sites-enabled/000-default.conf
# Fix the .env file for production.
RUN mv "$APP_HOME/.env.production" "$APP_HOME/.env"
# Enable apache module rewrite
RUN a2enmod rewrite
# Install dependencies
RUN npm install
# Compile CSS & JS
RUN npm run production
# Install all PHP dependencies
RUN composer install --no-interaction
# Create mountpoints and link them.
RUN ln -s /mnt/orders /var/www/html/public/orders
# Run artisan commands to set things up properly
RUN php artisan key:generate
RUN php artisan storage:link
# Optimization for production
RUN composer install --optimize-autoloader --no-dev
RUN php artisan config:cache
RUN php artisan route:cache
RUN php artisan view:cache
# Set the maintainer info metadata
LABEL maintainer="Sturm <email_hidden>"
А вот соответствующая часть файла docker-compose.yml
:
# Laravel app (Apache & PHP services with Laravel)
schedule:
build:
args:
user: www-data
uid: 1000
context: .
dockerfile: Dockerfile
image: "sturmb/sky-schedule:2021.6.1"
container_name: schedule
restart: unless-stopped
working_dir: /var/www/html
volumes:
- /mnt/jobs_main:/mnt/jobs_main
- /mnt/orders:/mnt/orders
depends_on:
- schedule-db
ports:
- "8081:80"
- "4543:443"
networks:
- web
docker-compose.yml
. - person anemyte   schedule 16.03.2021php:apache
. Несмотря на это, он работает и на моем компьютере для разработчиков. Я не вижу, где разные ядра, не могли бы вы уточнить? - person Sturm   schedule 16.03.2021php artisan config:cache
, похоже, портит приложение, поэтому мне нужноconfig:clear
его. (Тем не менее, похоже, это не проблема в Dockerfile.) - person Sturm   schedule 16.03.2021package-lock.json
иcomposer.lock
. Однако при проверкеphpinfo()
есть отличия. например, dev использует PHP на базе Windows (от Laragon) v7.4.16. Контейнер использует PHP версии 7.4.12 на базе Linux. Когда контейнер находится на моей локальной машине, он работает с WSL2 Ubuntu 20.04. На нашем действующем сервере также установлена Ubuntu 20.04. - person Sturm   schedule 17.03.2021env
в своем контейнере и на своей машине разработки и подтвердить различия. - person Software Engineer   schedule 22.03.2021$.blockUI.defaults.overlayCSS.opacity
stackoverflow.com/questions/6636157/ - person runwuf   schedule 22.03.2021blockUI.defaults.overlayCSS.opacity
, вы увидите где-нибудь в коде, который устанавливает это? - person runwuf   schedule 22.03.2021