将PHP-Apache2从Debian迁移到Alpine时缺少目录和文件



我正在尝试将一个码头化的PHP-Apache2服务器从Debian迁移到Alpine。

Debian dockerfile:

FROM php:7.3.24-apache-buster
COPY conf/php.ini /usr/local/etc/php
RUN apt-get update && apt-get upgrade -y && apt-get install -y 
curl git 
libfreetype6-dev 
libjpeg62-turbo-dev 
libmcrypt-dev 
libxml2-dev 
libpng-dev 
python-setuptools python-dev build-essential python-pip 
libzip-dev
RUN pecl install mcrypt-1.0.2 
&& docker-php-ext-enable mcrypt 
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ 
&& docker-php-ext-install -j$(nproc) gd 
&& docker-php-ext-install mysqli 
&& docker-php-ext-install zip 
&& docker-php-ext-install soap
RUN  pip install --upgrade virtualenv && pip install xhtml2pdf
WORKDIR /var/www/app
COPY ./ /var/www/app
RUN cd /var/www/app && 
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && 
php composer-setup.php && 
php -r "unlink('composer-setup.php');" && 
php composer.phar install --ignore-platform-reqs --prefer-dist
COPY ./conf/default.conf /etc/apache2/sites-enabled/000-default.conf
COPY ./conf/cert /etc/apache2/cert
RUN mkdir /var/log/gts && chmod 777 -R /var/log/gts
RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
RUN mv /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load
COPY conf/apache2.conf /etc/apache2/apache2.conf
RUN mv /etc/apache2/mods-available/remoteip.load /etc/apache2/mods-enabled/remoteip.load
EXPOSE 443

阿尔卑斯码头文件:

FROM webdevops/php-apache:7.3-alpine
COPY conf/php.ini /usr/local/etc/php
RUN apk update && apk upgrade && apk add 
git 
curl 
autoconf 
freetype-dev 
libjpeg-turbo-dev 
libmcrypt-dev 
libxml2-dev 
libpng-dev 
libzip-dev 
py-setuptools 
python3-dev 
build-base 
py-pip 
libzip-dev 
apache2-dev
RUN PHP_AUTOCONF="/usr/bin/autoconf" 
&& pecl install mcrypt-1.0.2 
&& docker-php-ext-enable mcrypt 
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN  pip install --upgrade --ignore-installed virtualenv && pip install xhtml2pdf
WORKDIR /var/www/app
COPY ./ /var/www/app
RUN cd /var/www/app && 
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && 
php composer-setup.php && 
php -r "unlink('composer-setup.php');" && 
php composer.phar install --ignore-platform-reqs --prefer-dist
COPY ./conf/default.conf /etc/apache2/sites-enabled/000-default.conf
COPY ./conf/cert /etc/apache2/cert
RUN mkdir /var/log/gts && chmod 777 -R /var/log/gts
RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load 
&& mv /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load
COPY conf/apache2.conf /etc/apache2/apache2.conf
RUN mv /etc/apache2/mods-available/remoteip.load /etc/apache2/mods-enabled/remoteip.load
EXPOSE 443

阿尔卑斯山建造失败:

mv: can't rename '/etc/apache2/mods-available/rewrite.load': No such file or directory

原来阿尔卑斯集装箱:

  1. 没有/etc/apache2/mods-*目录和*.load文件
  2. /usr/lib/apache2中只有*.so文件(类似于Debian上/usr/lib/apache2/modules中的*.so文件列表(

问题:

  1. 为什么Alpine容器中没有*.load files
  2. 为什么我在Alpine容器中没有/etc/apache2/mods-*目录
  3. *.so文件是否等同于*.load文件
  4. 如果前面的是真的,那么我该如何使用*.so文件

PS:如果可能的话,我不想更改httpd.conf。

我试着逐一回答您的问题:

  1. 为什么Alpine容器中没有*.load文件

加载文件通常只包含一行用于加载特定模块,并且可以被视为使用shell脚本(a2enmod(切换模块的一种方便方法

  1. 为什么Alpine容器中没有/etc/apache2/mods-*目录

Alpine尝试极简主义。这也意味着您不应该安装不需要的模块。因此,安装不需要的模块(例如,仅在可用的MOD中(是一种糟糕的做法。

  1. *.so文件等同于*.load文件吗

so文件也存在于debian中,并且是模块本身。加载文件是用于加载这些.so文件的配置片段。

  1. 如果前面的是真的,那么我该如何使用*.so文件

只需查看加载文件即可。例如,您可以使用以下配置行加载重写模块:

LoadModule rewrite_module modules/mod_rewrite.so

您不应该更改httpd.conf,您的偏好就在这里。但是您可以将自定义配置放入/etc/apache2/conf.d中,并在那里加载所有模块。只需确保您的配置文件以.conf结尾即可

相关内容

  • 没有找到相关文章

最新更新