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_937189235 小时前
2025 优化版神马影视 8.8 源码系统|零基础部署
android·源码·开源软件·源代码管理·机顶盒
モンキー・D・小菜鸡儿7 小时前
Android Jetpack Compose 基础控件介绍
android·kotlin·android jetpack·compose
无风之翼8 小时前
android15 休眠唤醒过程中有时候屏幕显示时间一闪而过
android·锁屏
方白羽9 小时前
Android全局悬浮拖拽视图
android·app·客户端
Jerry11 小时前
Compose 高级状态和附带效应
android
2501_9160074712 小时前
苹果手机iOS应用管理全指南与隐藏功能详解
android·ios·智能手机·小程序·uni-app·iphone·webview
LFly_ice12 小时前
Nest-管道
android·java·数据库
ab_dg_dp14 小时前
android bugreport 模块源码分析
android
2501_9151063215 小时前
全面理解 iOS 帧率,构建从渲染到系统行为的多工具协同流畅度分析体系
android·ios·小程序·https·uni-app·iphone·webview
繁星星繁15 小时前
【Mysql】数据库基础
android·数据库·mysql