Docker 搭建 PHP8 + Apache + Laravel 环境

下载镜像

复制配置文件

创建临时容器

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 付诸于行动, 是真的…唉 :broken_heart:

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!