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'),

结束

相关推荐
用户69371750013844 小时前
4.Kotlin 流程控制:强大的 when 表达式:取代 Switch
android·后端·kotlin
用户69371750013844 小时前
5.Kotlin 流程控制:循环的艺术:for 循环与区间 (Range)
android·后端·kotlin
Android系统攻城狮4 小时前
Android ALSA驱动进阶之获取周期帧数snd_pcm_lib_period_frames:用法实例(九十五)
android·pcm·android内核·音频进阶·周期帧数
雨白6 小时前
Jetpack Compose 实战:自定义自适应分段按钮 (Segmented Button)
android·android jetpack
AskHarries7 小时前
RevenueCat 接入 Google Play 订阅全流程详解(2025 最新)
android·flutter·google
The best are water7 小时前
MySQL FEDERATED引擎跨服务器数据同步完整方案
android·服务器·mysql
消失的旧时光-19438 小时前
我如何理解 Flutter 本质
android·前端·flutter
czhc11400756639 小时前
C#1119记录 类 string.Split type.TryParse(String,out type 变量)
android·c#
豆豆豆大王10 小时前
Android SQLite 数据库开发完全指南:从核心概念到高级操作
android·sqlite·数据库开发
_李小白10 小时前
【Android FrameWork】延伸阅读:AssetManager
android