📅  最后修改于: 2023-12-03 15:28:09.422000             🧑  作者: Mango
如果你是一位PHP开发人员,想要加快你的开发速度,并且想要一种简单易用的部署方式,那么Laravel+Docker可能是一个不错的选择。
Laravel是一种现代化的PHP开发框架,它提供了全面的工具集,包括路由、中间件、控制器、模型、视图等,使得开发者能够快速构建WEB应用程序。另外,Laravel还拥有非常强大的ORM(对象关系映射),能够帮助开发者轻松地操作数据库。
Docker是一种开源的容器技术,它允许开发人员将应用程序及其依赖项打包到一个容器中,以便于跨不同环境的部署和运行,保证应用在任何环境中的一致性。
myapp
,并在此目录下创建一个 Dockerfile
文件,用于指定应用程序的镜像。FROM php:7.4-fpm
RUN apt-get update && apt-get install -y \
git \
zip \
unzip \
libpq-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev
RUN docker-php-ext-install pdo pdo_mysql pdo_pgsql && \
docker-php-ext-configure gd --with-freetype --with-jpeg && \
docker-php-ext-install gd
COPY . /var/www/html
RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache
CMD ["php-fpm"]
EXPOSE 9000
这里我们基于php:7.4-fpm
镜像来创建我们的Laravel应用程序,安装了PHP扩展、git、zip和unzip等工具以及其他必要的库文件(如postgresql库文件),最后我们将让docker执行命令CMD ["php-fpm"]以启动fpm。
myapp
目录下,创建一个 docker-compose.yml
文件用于启动我们的容器。version: '2'
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:80"
volumes:
- .:/var/www/html/
depends_on:
- db
db:
image: postgres:11
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: password
POSTGRES_DB: laravel_db
volumes:
- laravel_db:/var/lib/postgresql/data
volumes:
laravel_db:
这里我们定义了两个服务 web
和 db
。在 web
服务中我们使用前面定义的 Dockerfile
来创建我们的应用容器,并将本地目录挂载到容器的 /var/www/html/
目录下。另外,我们通过depends_on
关键字来定义依赖关系,使得 web
服务在 db
服务启动之后才会启动。在 db
服务中,我们使用了PostgreSQL 11的镜像,并给它定义了一些环境变量来设置数据库的用户名、密码以及数据库名称。此外,我们还定义了一个名为larevel_db的数据卷来保证数据的持久化。
myapp
目录下,运行以下命令来构建和启动容器:docker-compose up --build
现在,我们的Laravel应用程序已经在Docker容器中启动了,通过访问 localhost:8080
可以查看程序的Welcome页面。如果你想通过命令行来运行Laravel的命令,可以执行以下命令:
docker-compose exec web php artisan <command>
通过使用Docker,我们可以简化Laravel应用程序的部署过程。使用Docker Compose来管理容器,我们可以方便地定义多个服务以及它们之间的依赖关系,保证整个应用程序可以以一致的方式进行部署和运行。开始使用Laravel+Docker吧,让你的开发体验更加愉快!