MACBOOKAIR环境安装PHP7+MariaDB10和PHP8+MYSQL8环境配置与fastadmin的thinkphp配置文件nginx.conf及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'),

结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值