在这个快速发展的数字时代,容器化技术已经成为部署Web应用的首选之一。Docker作为容器化技术的代表,可以让你的应用更加易于迁移、扩展和部署。本文将带你从零开始,手把手教你如何使用Docker容器化部署一个基于PHP的Laravel框架网站。
准备工作
在开始之前,请确保你的系统中已安装以下软件:
- Docker Engine
- Docker Compose(可选,用于自动化容器编排)
你可以通过以下命令检查是否已安装:
docker --version
docker-compose --version
如果没有安装,请访问Docker官网和Docker Compose官网获取安装指南。
第一步:编写Dockerfile
首先,我们需要创建一个Dockerfile来定义Laravel网站的基础环境。以下是Dockerfile的基本内容:
# 使用官方PHP基础镜像
FROM php:7.4-fpm
# 安装Laravel环境所需的扩展
RUN docker-php-ext-install pdo pdo_mysql
# 设置时区
RUN echo "Asia/Shanghai" > /etc/timezone && \
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
dpkg-reconfigure --frontend noninteractive tzdata
# 添加Laravel仓库的GPG密钥
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# 将Laravel框架的源码复制到容器中
COPY . /var/www
# 设置工作目录
WORKDIR /var/www
# 设置环境变量
ENV APP_ENV=production
ENV APP_KEY=base64:YOUR_APP_KEY
ENV DB_HOST=mysql
ENV DB_NAME=laravel
ENV DB_USER=root
ENV DB_PASSWORD=your_db_password
# 安装Laravel依赖
RUN composer install --no-dev --optimize-autoloader --prefer-dist
# 构建Laravel资源
RUN php artisan key:generate
RUN php artisan migrate
RUN php artisan config:cache
RUN php artisan route:cache
# 暴露FPM端口
EXPOSE 9000
# 定义容器启动时运行的命令
CMD ["php-fpm"]
请将YOUR_APP_KEY和your_db_password替换为你的实际应用密钥和数据库密码。
第二步:创建.dockerignore文件
为了排除不需要的文件进入容器,我们创建一个.dockerignore文件:
node_modules
npm-debug.log
composer.json
composer.lock
.git
.gitignore
第三步:编写docker-compose.yml
接下来,我们创建一个docker-compose.yml文件来定义和运行容器:
version: '3.8'
services:
web:
build: .
ports:
- "9000:9000"
volumes:
- .:/var/www
environment:
- APP_ENV=production
- APP_KEY=base64:YOUR_APP_KEY
- DB_HOST=mysql
- DB_NAME=laravel
- DB_USER=root
- DB_PASSWORD=your_db_password
depends_on:
- db
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_DATABASE=laravel
- MYSQL_USER=root
- MYSQL_PASSWORD=root_password
volumes:
db_data:
确保将YOUR_APP_KEY和root_password替换为你的实际值。
第四步:构建和运行容器
在项目根目录下执行以下命令:
docker-compose up -d
这将构建并启动你的容器。此时,你的Laravel网站应该已经可以通过http://localhost:9000访问了。
第五步:访问你的Laravel网站
在浏览器中输入http://localhost:9000,你应该能看到Laravel欢迎界面。
总结
通过上述步骤,你已经成功使用Docker容器化技术部署了一个PHP Laravel框架网站。这种方式可以让你的应用更加灵活、易于管理和扩展。希望这篇文章能帮助你更好地理解Docker和Laravel的部署过程。
