Docker 搭建 PHP8 + Apache + Laravel 环境 
                                                    
                        
                    
                    
  
                    
                    下载镜像
- docker pull php:apache-buster
- 这里使用的是 PHP+Apache合在一起的, docker hub 仓库地址
复制配置文件
创建临时容器
docker run -itd --name hi-tech -p 80:80 php:apache-buster
复制文件
- 创建文件夹mkdir -p /docker/conf/temp.test/phpmkdir -p /docker/conf/temp.test/apachemkdir -p /docker/wwwroot
- 复制配置文件docker cp 容器ID:/usr/local/etc /docker/conf/temp.test/php/etcdocker cp 容器ID:/etc/apache2/sites-available /docker/conf/temp.test/apache/sites-availabledocker cp 容器ID:/var/www/html /docker/wwwroot/html
删除临时容器
- 关闭容器: docker stop 容器ID
- 删除容器: docker rm 容器ID
创建最终使用容器
docker run -itd --name php -p 80:80 -v /docker/wwwroot/html:/var/www/html -v /docker/conf/temp.test/php/etc:/usr/local/etc -v /docker/conf/temp.test/apache/sites-available:/etc/apache2/sites-available php:apache-buster
安装 PHP 扩展
- 参考自该 文章
- 安装 pdo_mysql
- 进入容器: docker exec -it 容器ID /bin/bash, 执行以下命令:- docker-php-source extract
- cd /usr/src/php/ext
- docker-php-ext-install pdo_mysql
- command + d退出容器
- 编辑之前复制出来的 PHP配置文件, 即/docker/conf/temp.test/php/etc/php.ini-development和/docker/conf/temp.test/php/etc/php.ini-production, 去掉文件中;extension=pdo_mysql前面的;
- 重启容器: docker restart 容器ID
 
修改 Apache 配置
开启 rewrite 模块
- 进入容器: docker exec -it 容器ID /bin/bash
- a2enmod rewrite
- 重启容器: docker restart 容器ID
添加站点
- cd /docker/conf/temp.test/apache/sites-available
- vim temp.test.conf, 添加以下内容:- <VirtualHost *:80> ServerName www.temp.test DocumentRoot /var/www/html/temp.test <Directory "/var/www/html/temp.test"> SetOutputFilter DEFLATE AllowOverride All Require all granted DirectoryIndex index.php index.html index.htm default.php default.html default.htm </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
- 进入容器: docker exec -it 容器ID /bin/bash
- cd /etc/apache2/sites-enabled
- ln -s ../sites-available/temp.test.conf ./temp.test.conf
数据库
- 数据库使用的是宿主机的, 所以在 Laravel的.env配置文件中,MySQL的地址写服务器的 IP, 可以使用ifconfig来查看
ps: 第一次将 docker 付诸于行动, 是真的…唉 
本作品采用《CC 协议》,转载必须注明作者和本文链接
 
           qingshui 的个人博客
 qingshui 的个人博客
         
                     
                     
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: