MACBOOKAIR环境安装PHP7+MARIADB10和PHP8+MYSQL8环境配置与FASTADMIN及LARAVEL10

开始

PHP7的

DOCKER-COMPOSE.YML

复制代码
services:
  # Nginx 服务
  nginx:
    image: nginx:alpine
    container_name: nginx-php74
    ports:
      - "74:80"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/logs:/var/log/nginx
      - ./www:/var/www/html
    depends_on:
      - php-fpm
    networks:
      - php74-network
    restart: unless-stopped

  # PHP 7.4 FPM 服务
  php-fpm:
	build:
      		context: ./php
      		dockerfile: Dockerfile
    #image: php:7.4-fpm-alpine
    container_name: php74-fpm
    volumes:
      - ./www:/var/www/html
      - ./php/php.ini:/usr/local/etc/php/conf.d/custom.ini
    networks:
      - php74-network
    restart: unless-stopped

  # MariaDB 10 服务 (兼容 MySQL 5.7)
  mariadb:
    image: mariadb:10.11
    container_name: mariadb-php74
    platform: linux/arm64
    ports:
      - "33074:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root123456
      MYSQL_DATABASE: app_db
      MYSQL_USER: app_user
      MYSQL_PASSWORD: user123456
      MYSQL_INITDB_SKIP_TZINFO: 1
    volumes:
      - ./mariadb/data:/var/lib/mysql
      - ./mariadb/conf:/etc/mysql/conf.d
    networks:
      - php74-network
    restart: unless-stopped
    command:
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
      - --innodb_buffer_pool_size=256M

networks:
  php74-network:
    driver: bridge

NGINX配置文件:

FASTADMIN74.COM.CONF

复制代码
server {
    listen 80;
    server_name fastadmin74.com;
    root /var/www/html/fastadmin74/public;
    index index.php index.html index.htm;

    # 静态文件
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        try_files $uri $uri/ =404;
    }

    # 所有PHP文件处理
    location ~ \.php {
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
        fastcgi_read_timeout 300;
    }

    # 通用路由重写
    location / {
        try_files $uri $uri/ /index.php?s=$uri&$args;
    }

    error_log /var/log/nginx/fastadmin74_error.log;
    access_log /var/log/nginx/fastadmin74_access.log;
}

PHP8的

YML

复制代码
version: '3.8'

services:
  # PHP 8.2 应用服务
  php82:
    build: 
      context: .
      dockerfile: Dockerfile
    container_name: php82-app
    volumes:
      - ./src:/var/www/html  # 将本地项目代码目录挂载到容器
    depends_on:
      - mysql82  # 确保MySQL先启动
    networks:
      - php82-network

  # Nginx Web 服务器
  nginx82:
    image: nginx:alpine
    container_name: nginx82
    ports:
      - "8080:80"  # 将宿主机的8080端口映射到容器的80端口
    volumes:
      - ./src:/var/www/html  # 项目代码
      #- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf  # Nginx配置
      - ./nginx/conf.d:/etc/nginx/conf.d  # 改为 conf.d 目录
      - ./logs/nginx:/var/log/nginx  # 日志目录
    depends_on:
      - php82  # Nginx依赖PHP-FPM服务
    networks:
      - php82-network

  # MySQL 8.0 数据库服务
  mysql82:
    image: mysql:8.0
    container_name: mysql82
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: my_app_db
      MYSQL_USER: app_user
      MYSQL_PASSWORD: user_password
    command: 
      - --default-authentication-plugin=mysql_native_password
      - --skip-ssl
    ports:
      - "3307:3306"
    volumes:
      - mysql82_data:/var/lib/mysql
    networks:
      - php82-network

# 定义网络和数据卷
volumes:
  mysql82_data:

networks:
  php82-network:
    driver: bridge

CONF

复制代码
server {
    listen 80;
    server_name fastadmin82.com;
    root /var/www/html/fastadmin82/public;
    index index.php index.html index.htm;

    # 静态文件
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
        try_files $uri $uri/ =404;
    }

    # 所有PHP文件处理
    location ~ \.php {
        fastcgi_pass php82:9000;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
        fastcgi_read_timeout 300;
    }

    # 通用路由重写
    location / {
        try_files $uri $uri/ /index.php?s=$uri&$args;
    }

    error_log /var/log/nginx/fastadmin_error.log;
    access_log /var/log/nginx/fastadmin_access.log;
}

拉取LARAVEL代码:

复制代码
# 方法1:使用root用户直接安装
docker exec -it --user root php82-app bash

# 在容器内执行
cd /var/www/html
composer create-project laravel/laravel . --prefer-dist

# 或者指定具体版本(Laravel 10的最新版本)
composer create-project laravel/laravel:^10.0 . --prefer-dist

拉取FASTADMIN代码:

直接下载官方完整包即可。

复制代码
# 查看服务状态
docker-compose ps

# 查看服务日志
docker-compose logs
docker-compose logs nginx82
docker-compose logs php82-app  
docker-compose logs mysql82

docker ps -a 
docker exec -it php82-app bash 

# 进入容器
docker-compose exec php82-app bash
docker-compose exec mysql82 mysql -u app_user -p

# 停止环境
docker-compose down

# 重新启动
docker-compose up -d

重启NGINX
docker restart nginx-php74 
重启前检查配置
docker exec nginx82 nginx -t


重新启动MYSQL
docker-compose up -d mysql82


# 重建服务(代码修改后)
docker-compose up -d --build

# 检查Nginx错误日志
docker-compose logs nginx82

# 检查PHP-FPM错误日志  
docker-compose logs php82-app

# 检查容器内部
docker-compose exec nginx82 cat /etc/nginx/conf.d/default.conf


mysql -h 127.0.0.1 -P 3307 -u root -p
# 输入密码:root_password

# 或者连接应用用户
mysql -h 127.0.0.1 -P 3307 -u app_user -p user_password my_app_db

fastadmin中数据库文件

复制代码
use think\Env;

return [
    'type'            => Env::get('database.type', 'mysql'),
    'hostname'        => Env::get('database.hostname', 'mysql82'),
    'database'        => Env::get('database.database', 'fastadmin82'),
    'username'        => Env::get('database.username', 'root'),
    'password'        => Env::get('database.password', 'root_password'),
    'hostport'        => Env::get('database.hostport', '3306'),

结束

相关推荐
2501_937145411 小时前
神马影视8.8版2026最新版:核心技术升级与多场景适配解析
android·源码·电视盒子·源代码管理
2501_944424123 小时前
Flutter for OpenHarmony游戏集合App实战之俄罗斯方块七种形状
android·开发语言·flutter·游戏·harmonyos
不会Android的潘潘4 小时前
受限系统环境下的 WebView 能力演进:车载平台 Web 渲染异常的根因分析与优化实践
android·java·前端·aosp
建军啊4 小时前
java web常见lou洞
android·java·前端
豆奶dudu5 小时前
安卓应用签名生成+微信开放平台安卓应用签名
android·微信开放平台
AC赳赳老秦6 小时前
Dify工作流+DeepSeek:运维自动化闭环(数据采集→报告生成)
android·大数据·运维·数据库·人工智能·golang·deepseek
2501_944424126 小时前
Flutter for OpenHarmony游戏集合App实战之记忆翻牌配对消除
android·java·开发语言·javascript·windows·flutter·游戏
2501_944526426 小时前
Flutter for OpenHarmony 万能游戏库App实战 - 设置功能实现
android·javascript·flutter·游戏·harmonyos
冬奇Lab7 小时前
【Kotlin系列11】协程原理与实战(下):Flow与Channel驯服异步数据流
android·开发语言·kotlin
_昨日重现7 小时前
Jetpack系列之Compose Scaffold
android·android jetpack