如何在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即可访问

更多推荐