Когда я добавляю его в 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"]
< 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
Мобильная версия