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

结束

相关推荐
阿巴斯甜18 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker19 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952720 小时前
Andorid Google 登录接入文档
android
黄林晴21 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿2 天前
Android MediaPlayer 笔记
android
Jony_2 天前
Android 启动优化方案
android
阿巴斯甜2 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇2 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_2 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android