Невозможно запустить PHP ARTISAN OPTIMIZE в Dockerfile в Azure CI/CD.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Невозможно запустить PHP ARTISAN OPTIMIZE в Dockerfile в Azure CI/CD.

Сообщение Anonymous »

Я пытаюсь разработать решение для автоматического использования PHP ARTISAN CACHE в Dockerfile или на этапе YAML без сбоя моего приложения.
Когда я добавляю его в Dockerfile, который я использую при монтировании контейнера для развертывания приложение выходит из строя с ошибкой 500.
Но когда я использую его вручную в консоли приложения Azure Container, оно работает нормально и все работает идеально...
Поскольку я пытаюсь все автоматизировать и обеспечить непрерывное развертывание, я не могу запускать это вручную при каждом развертывании.
Это Dockerfile, который я использую:

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

FROM debian:latest

# Install PHP, Apache and necessary extensions
RUN apt-get update && \
apt-get install php8.2 php8.2-cli php8.2-zip php8.2-mysql php8.2-bz2 php8.2-curl php8.2-mbstring php8.2-intl php8.2-bcmath php8.2-dom php8.2-gd php8.2-common apache2 libapache2-mod-php8.2 -y

# Enable PHP and Apache modules
RUN a2enmod php8.2 rewrite

# Install composer
RUN apt-get update && apt-get install -y curl
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Install Node and NPM
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
ENV NVM_DIR /root/.nvm
RUN . "$NVM_DIR/nvm.sh"
ARG NODE_VERSION=21.0.0
RUN . "$NVM_DIR/nvm.sh" && \
nvm install ${NODE_VERSION} && \
nvm alias default ${NODE_VERSION} && \
nvm use default
ENV NODE_PATH $NVM_DIR/versions/node/v${NODE_VERSION}/lib/node_modules
ENV PATH $NVM_DIR/versions/node/v${NODE_VERSION}/bin:$PATH

# Clean up the apt cache to reduce the image size
RUN apt-get clean && \
rm -rf /var/lib/apt/lists/*

# Set the working directory
WORKDIR /var/www/html

# Copy composer and npm configuration files
COPY composer.json composer.lock package.json package-lock.json ./

ENV COMPOSER_ALLOW_SUPERUSER=1

# Install composer and npm dependencies
RUN composer install --no-scripts --no-autoloader --no-dev && \
npm install

# Copy the rest of the application
COPY . .

# Finish composer setup and run npm build
RUN composer dump-autoload --optimize && \
npm run build

# Setup apache and php custom configuration
COPY docker/php-apache/000-default.conf /etc/apache2/sites-available/000-default.conf
COPY docker/php-apache/php.ini /etc/php/8.2/apache2/php.ini

# Run artisan commands (clear commands first)
RUN php artisan optimize:clear && \
php artisan icons:clear && \
php artisan icons:cache

# Set permissions for Laravel
RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache
RUN chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache

# Expose port 80
EXPOSE 80

# Start Apache in the foreground AND NPM RUN BUILD
CMD ["apache2ctl", "-D", "FOREGROUND"]
После некоторых подсказок я понял, что когда я запускаю команду оптимизировать или конфигурировать artisan в файле docker, некоторые файлы получают это разрешение:
< img alt="введите описание изображения здесь" src="https://i.sstatic.net/v7DwLxo7.png" />
При этом приложение получает ошибку 500 и не работает. даже ничего не показывает.
И когда я вручную ввожу команду в консоли приложений-контейнеров Azure, она работает нормально и с такими разрешениями:
< img alt="введите описание изображения здесь" src="https://i.sstatic.net/26FdCiPM.png" />
Теперь он использует root для запуска php artisan optmize, но в конвейере используются обычные www-данные.
Я почти на 100% уверен, что у него есть какие-то разрешения, но не могу понять какие.

Подробнее здесь: https://stackoverflow.com/questions/790 ... zure-ci-cd
Ответить

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

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

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

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

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