eld*_*981 6 php apache docker docker-compose
我试图在 docker 容器中使用 docker-compose 来获取 php:apache 服务器。但撰写后我收到以下错误消息:
\n\n[client 172.21.0.1:49230] AH01276: Cannot serve directory /var/www/html/: No matching DirectoryIndex (index.php,index.html) found, and server-generated directory index forbidden by Options directive\nRun Code Online (Sandbox Code Playgroud)\n\n我的泊坞窗文件:
\n\nFROM php:7.1-apache\n\nRUN apt-get update -y\nRUN apt-get upgrade -y\n\nRUN apt-get install -y \\\n adduser \\\n ca-certificates \\\n unzip \\\n curl \\\n git \\\n wget \\\n openssl\n\nRUN docker-php-ext-install pdo_mysql\n\n# Installiere ben\xc3\xb6tigte PHP Erweiterungen\nRUN apt-get install -y \\\n libfreetype6-dev \\\n libjpeg62-turbo-dev \\\n libmcrypt-dev \\\n libpng12-dev \\\n && docker-php-ext-install -j$(nproc) iconv mcrypt \\\n && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \\\n && docker-php-ext-install -j$(nproc) gd\n\n# Install bcmath\nRUN docker-php-ext-install bcmath pcntl\n\n# Install Phalcon-PHP\nWORKDIR /phalcon/cphalcon\n\n# https://github.com/phalcon/cphalcon/releases\nENV PHALCON_VERSION "v3.2.1"\nRUN curl -L -o "phalcon-${PHALCON_VERSION}.tar.gz" "https://api.github.com/repos/phalcon/cphalcon/tarball/${PHALCON_VERSION}" \\\n && tar -xvf "phalcon-${PHALCON_VERSION}.tar.gz" --strip 1 \\\n && rm "phalcon-${PHALCON_VERSION}.tar.gz" \\\n && cd /phalcon/cphalcon/build \\\n && ./install\n\n# Install Phalcon Devtools\nWORKDIR /usr/local/lib/phalcon-devtools\n\n# https://github.com/phalcon/phalcon-devtools/releases\nENV PHALCON_DEVTOOLS_VERSION "v3.2.0"\nRUN curl -L -o "phalcon-devtools-${PHALCON_DEVTOOLS_VERSION}.tar.gz" "https://api.github.com/repos/phalcon/phalcon-devtools/tarball/${PHALCON_DEVTOOLS_VERSION}" \\\n && tar -xvf "phalcon-devtools-${PHALCON_DEVTOOLS_VERSION}.tar.gz" --strip 1 \\\n && rm "phalcon-devtools-${PHALCON_DEVTOOLS_VERSION}.tar.gz" \\\n && ln -s /usr/local/lib/phalcon-devtools/phalcon.php /usr/bin/phalcon \\\n && chmod +x /usr/bin/phalcon\n\n# Install Composer\nRUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer\nRUN chmod +x /usr/local/bin/composer\n\n# Install Dockerize\nENV DOCKERIZE_VERSION v0.5.0\nRUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \\\n && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz\n\nWORKDIR /usr/src/fileserver\n\nCOPY config/apache/apache2.conf /etc/apache2/apache2.conf\nCOPY config/apache/envvars /etc/apache2/envvars\nCOPY config/apache/site-default.conf /etc/apache2/sites-available/000-default.conf\nCOPY config/apache/project.conf /etc/apache2/project.conf\nCOPY config/php.ini /usr/local/etc/php/\n\nCOPY run.sh /run.sh\nCOPY start_safe_perms.sh /start_safe_perms.sh\nRUN chmod 755 /*.sh\n\nRUN a2enmod rewrite\nRUN a2enmod headers\n\n\nVOLUME ["/usr/src/fileserver"]\n\nCMD ["/run.sh"]\nRun Code Online (Sandbox Code Playgroud)\n\ndocker-撰写:
\n\nversion: \'3.1\'\n\nservices:\n\nfileserver:\n build: fileServer/docker\n container_name: fileServer\n volumes:\n - ./FileServer/:/usr/src/fileserver #/usr/src/app\n ports:\n - "5001:80"\nRun Code Online (Sandbox Code Playgroud)\n\n我认为错误来自我的 site-default.config,它通常应该覆盖 000-default.conf
\n\n但我不知道\xc2\xb4为什么默认目录是var/www/html。它应该是 /usr/src/fileserver/public/ (如果我docker exec在这个容器中这样做,它会显示带有 index.php 的 fileserver 文件夹)
站点默认.conf
\n\n<VirtualHost *:5001>\n\n DocumentRoot /usr/src/fileserver/public\n\n <Directory /usr/src/fileserver/public/>\n Options Indexes FollowSymLinks\n AllowOverride All\n Require all granted\n </Directory>\n\n ErrorLog /usr/src/fileserver/docker/logs/error.log\n CustomLog /usr/src/fileserver/docker/logs/access.log combined\n\n</VirtualHost>\nRun Code Online (Sandbox Code Playgroud)\n\n有人能帮我吗?(如果需要,请询问更多信息)
\n看起来您正在将端口 5001 从本地计算机公开到 docker 实例上的端口 80,但随后您在端口 5001 上定义虚拟主机。因此您的 site-default.conf 可能应该显示为:
<VirtualHost *:80>
请注意,错误是关于 /var/www/html/ (某些 Apache 默认目录)而不是您自己的 /usr/src/fileserver/public