Docker Apache正在向图像添加标头,导致图像损坏

Docker Apache正在向图像添加标头,导致图像损坏,docker,apache,kubernetes,Docker,Apache,Kubernetes,我正在对接一个laravel应用程序,我的图像基于apache图像,这是在AKS中托管的,我在其中装载azure文件,其中图像共享在/public/images中,问题是apache会在图像中添加头,导致图像损坏 即使我在pod内部执行并尝试curl localhost,我也会遇到同样的问题,因此我确信这不是路由或入口的问题 FROM php:7.3-apache #install all the system dependencies and enable PHP modules

我正在对接一个laravel应用程序,我的图像基于apache图像,这是在AKS中托管的,我在其中装载azure文件,其中图像共享在/public/images中,问题是apache会在图像中添加头,导致图像损坏

即使我在pod内部执行并尝试curl localhost,我也会遇到同样的问题,因此我确信这不是路由或入口的问题

    FROM php:7.3-apache

#install all the system dependencies and enable PHP modules 
RUN apt-get update -y && apt-get install -y libmcrypt-dev openssl
RUN apt-get update && apt-get install -y libmcrypt-dev \
    && pecl install mcrypt-1.0.2 \
    && docker-php-ext-enable mcrypt
RUN docker-php-ext-install pdo mbstring 
RUN apt-get install -y \
        libzip-dev \
        zip \
  && docker-php-ext-install zip
RUN apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev && \
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN docker-php-ext-install gd
RUN docker-php-ext-install mysqli pdo pdo_mysql
# RUN apt-get install wget
RUN apt-get update; apt-get install curl -y

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

#set our application folder as an environment variable
ENV APP_HOME /var/www/html

#change uid and gid of apache to docker user uid/gid
RUN usermod -u 1000 www-data && groupmod -g 1000 www-data

#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
COPY vhost.conf /etc/apache2/sites-available/000-default.conf
RUN echo "EnableSendfile off" >> /etc/apache2/apache2.conf


# enable apache module rewrite
RUN a2enmod rewrite

#copy source files and run composer
COPY . $APP_HOME

# install all PHP dependencies
RUN composer install --no-interaction


#change ownership of our applications
RUN chown -R www-data:www-data $APP_HOME
接下来,使用常规部署yaml文件将其推送到kubernetes,并装载以下卷:

volumeMounts:
- name: sessions
  mountPath: /var/www/html/storage/framework/sessions
- name: cache
  mountPath: /var/www/html/storage/framework/cache
- name: views
  mountPath: /var/www/html/storage/framework/views
- name: images
  mountPath: /var/www/html/public/images
卷数:

  • 名称:会话 azureFile: 秘书名:appmnt 共享名:会话 只读:false
  • 名称:缓存 azureFile: 秘书名:appmnt 共享名:缓存 只读:false
  • 名称:视图 azureFile: 秘书名:appmnt 共享名:视图 只读:false
  • 名称:图片 azureFile: 秘书名:appmnt 共享名称:图像 只读:false
现在的问题是,如果我尝试从images文件夹访问静态文件,例如使用url,如“https://www.somedomain.com/images/somefile.png"

该文件将被下载,但apache会将上述标题附加到内容,从而导致损坏

除了卷装载中的任何文件之外,web应用程序工作得非常好


如果我执行“kubectl exec-it podname-bash”并浏览文件,我可以看到卷装载工作正常,如果我尝试从应用程序界面上载文件,文件会以写入方式写入文件夹,唯一的问题是浏览文件。

我们修复了这个问题,只需在vhost.conf中,我们需要关闭EnableMap

EnableMMAP off

你能分享更多关于图像和服务于图像的代码的细节吗。它不是入口,因为它在pod内是相同的,路由将永远不会添加头。目前还不清楚哪些标题是问题所在,预期的行为是什么。完成后,我提供了更多详细信息,预期的行为是下载或浏览带有corruptionIt的图像,而不是Docker或Kubernetes问题。我假设是apache配置或代码本身。你能检查vhost.conf并与之比较吗。另外,比较一下你正在采取的步骤,乔丹弗塔诺斯基可能是对的。您是否可以与我们共享您的
vhost.conf
文件?请注意:与其调用所有
apt-get
pecl
docker-php-ext-install
命令,不如使用?