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/php
mkdir -p /docker/conf/temp.test/apache
mkdir -p /docker/wwwroot
- 复制配置文件
docker cp 容器ID:/usr/local/etc /docker/conf/temp.test/php/etc
docker cp 容器ID:/etc/apache2/sites-available /docker/conf/temp.test/apache/sites-available
docker 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 协议》,转载必须注明作者和本文链接