如何在macos 用docker-compose搭建一个可以运行的lavarel框架,swoole扩展?
·
如何在macos 用docker-compose搭建一个可以运行的lavarel 框架?
环境:mysql版本8.0,php8.1 ,swoole4.8.3,nginx,redis
1.安装 Docker Desktop for Mac。您可以从 Docker 官网上下载和安装 Docker Desktop for Mac,该软件将包含必要的 Docker 引擎和相关工具。
2.安装 Docker Compose。Docker Desktop for Mac 包含了 Docker Compose 工具,您可以在终端中输入 docker-compose 命令检查是否已经安装。如果没有安装,请按照 Docker Compose 的文档进行安装。
3.创建一个名为 docker-compose.yml 的文件,并添加以下内容:
version: '3.9'
services:
nginx:
image: nginx:1.21
container_name: nginx
restart: always
ports:
- "80:80"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./:/var/www/html
networks:
- app
php:
build: .
container_name: php
restart: always
volumes:
- ./:/var/www/html
ports:
- "9501:9501"
networks:
- app
mysql:
image: mysql:8.0
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: my_laravel_app
volumes:
- ./mysql-data:/var/lib/mysql
ports:
- "3306:3306"
networks:
- app
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- "6379:6379"
networks:
- app
networks:
app:
driver: bridge
上述内容包括了五个服务:nginx、php、swoole、mysql 和 redis。其中 nginx 是 Web 服务器组件,php 是 PHP-FPM 组件,swoole 是 Swoole 服务组件,mysql 是 MySQL 数据库服务组件,redis 是 Redis 服务组件。
4.创建一个名为 Dockerfile 的文件,并添加以下内容:
FROM php:8.1-fpm
RUN apt-get update && \
apt-get install -y libzip-dev zip unzip && \
docker-php-ext-install pdo_mysql && \
pecl install swoole-4.8.3 && \
docker-php-ext-enable swoole && \
docker-php-ext-install zip
WORKDIR /var/www/html
上述内容定义了一个 Docker 镜像,该镜像基于 PHP 8.1 FPM 构建,安装了所需的依赖项和扩展,并启用了 Swoole 扩展。
5.将 Laravel 应用程序放入当前目录中,或者您可以使用 Composer 创建一个新的 Laravel 应用程序。例如:
composer create-project --prefer-dist laravel/laravel my-laravel-app
6.创建一个名为 default.conf 的文件,用于配置 Nginx Web 服务器。例如:
server {
listen 80;
server_name localhost;
root /var/www/html/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
7.运行 docker-compose up 命令来启动所有服务。在终端中进入 docker-compose.yml 所在的目录,然后运行:
docker-compose up
8.根目录下创建一个swoole的测试文件test.php
<?php
$http = new Swoole\Http\Server('0.0.0.0', 9501);
$http->on('Request', function ($request, $response) {
$response->header('Content-Type', 'text/html; charset=utf-8');
$response->end('<h1>Hello Swoole. #' . rand(1000, 9999) . '</h1>');
});
$http->start();
9.进入容器内docker-compose exec -it php bash ,运行swoole执行命令 php test.php,本地通过localhost:9051即可访问
更多推荐


所有评论(0)