Fre*_*man 6 php docker dockerfile docker-compose
version: "3.8"
networks:
frontend:
backend:
services:
apache:
container_name: apache
build: ./docker/apache/
ports:
- "8001:80"
volumes:
- ./src:/usr/local/apache2/htdocs
networks:
- frontend
- backend
php:
container_name: php
build: ./docker/php
ports:
- "9001:9000"
volumes:
- ./src:/usr/local/apache2/htdocs
working_dir: /usr/local/apache2/htdocs
networks:
- backend
Run Code Online (Sandbox Code Playgroud)
阿帕奇配置文件
LoadModule deflate_module /usr/local/apache2/modules/mod_deflate.so
LoadModule proxy_module /usr/local/apache2/modules/mod_proxy.so
LoadModule proxy_fcgi_module /usr/local/apache2/modules/mod_proxy_fcgi.so
<VirtualHost *:80>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/usr/local/apache2/htdocs/$1
DocumentRoot /usr/local/apache2/htdocs
<Directory /usr/local/apache2/htdocs/public>
Options -Indexes +FollowSymLinks
DirectoryIndex index.php
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的项目文件夹目录。当尝试访问 http://localhost:8002/ 时,它不会在浏览器索引中显示公共文件夹。
当更改 apache.conf 中的目录路径时找不到文件。浏览器上显示错误消息
<Directory /usr/local/apache2/htdocs/public>
Run Code Online (Sandbox Code Playgroud)
PHP Dockerfile
FROM php:8.1-fpm
COPY php.ini /usr/local/etc/php/conf.d/php.ini
RUN apt-get update \
&& apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmcrypt-dev \
&& docker-php-ext-install pdo
Run Code Online (Sandbox Code Playgroud)
Apache Dockerfile
FROM httpd:2.4.51
COPY apache.conf /usr/local/apache2/conf/apache.conf
RUN echo "Include /usr/local/apache2/conf/apache.conf" \
>> /usr/local/apache2/conf/httpd.conf
Run Code Online (Sandbox Code Playgroud)
为了进行测试,请尝试使用以下--mount语法,以完整路径作为源docker run:
--mount type=bind,source=/path/to/src,target=/usr/local/apache2/htdocs
^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
它指定绑定挂载,这意味着主机上的文件或目录被挂载到容器中。
另请检查 的输出docker inspect yourContainer,以查看已设置的音量。