通过 Docker 部署 Filament 后台管理系统 3天前 • Linux • 阅读 27 Filament 是一套基于 Laravel 的全栈开发工具集,提供了开箱即用的管理面板,丰富的 UI 组件库,以及完整的表单和数据表功能,帮助开发者快速构建后台管理系统。 本文将介绍如何在 CentOS 7.9 环境下,通过 Docker 部署 Filament 5.x 后台管理系统。 官方演示网站:https://demo.filamentphp.com/ 官方安装文档:https://filamentphp.com/docs/5.x/introduction/installation 目录 安装 Docker CE 和 Docker Compose准备工作配置数据库安装 Composer 和 Laravel配置 Tailwind CSS安装 Filament 面板升级 Filament 到最新版本 安装 Docker CE 和 Docker Compose 1、从阿里云仓库下载 Docker 软件包,并执行安装。 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 2、安装完成后启动 docker 服务。 systemctl start docker systemctl enable docker 3、查看版本信息。 docker --version docker compose version 4、如果你的服务器位于国内,建议更换 Docker 镜像站。 vi /etc/docker/daemon.json { "registry-mirrors": [ "https://docker.1panel.live", "https://docker.m.daocloud.io", "https://docker.1ms.run" ] } # 保存后重启 Docker 服务 systemctl daemon-reload systemctl restart docker 准备工作 1、执行 id 命令检查当前用户的 UID 和 GID 。 [root@server ~]# id uid=0(root) gid=0(root) groups=0(root) # 如果在群晖 NAS 上安装 Filament,需要通过 SSH 登录服务器,通过以下命令查看用户的 UID 和 GID 。 root@synology:~# cat /etc/passwd | grep kobin kobin:x:1026:100::/var/services/homes/kobin:/sbin/nologin 2、创建 Docker 服务所需的文件夹。 mkdir -p /opt/filament/{app,php,nginx,mysql} # 执行后目录结构如下: /opt └── filament ├── app # 项目代码 ├── php # php 配置 ├── nginx # nginx 配置 └── mysql # mysql 数据 3、新建一个 Dockerfile 文件,用于构建 PHP 8.2 + 常用扩展的 PHP-FPM 镜像,供 Laravel / Filament 项目使用。 vi /opt/filament/php/Dockerfile 以下配置中包含创建容器用户的步骤,主要用于避免 Docker 挂载目录时出现 UID/GID 权限冲突。 如果你的服务器使用非 root 用户 运行 Docker,建议将配置中的 USER_ID 和 GROUP_ID 修改为宿主机用户实际的 UID 和 GID(见第一步); 如果服务器日常使用 root 用户登录,一般不会遇到权限问题,可以移除相关配置段。 FROM php:8.2-fpm WORKDIR /var/www/filament # ========== 创建容器用户开始 ========== ARG USER_ID=1026 ARG GROUP_ID=100 ARG USER_NAME=appuser ARG GROUP_NAME=appgroup RUN if getent group ${GROUP_ID} > /dev/null; then \ echo "Group ${GROUP_ID} already exists, skipping creation"; \ else \ groupadd -g ${GROUP_ID} ${GROUP_NAME} || groupadd -g ${GROUP_ID} appgroup || true; \ fi RUN if getent passwd ${USER_ID} > /dev/null; then \ echo "User ${USER_ID} already exists, skipping creation"; \ else \ useradd -u ${USER_ID} -g ${GROUP_ID} -m ${USER_NAME} || useradd -u ${USER_ID} -g ${GROUP_ID} -m appuser || true; \ fi RUN mkdir -p /var/www && \ chown -R ${USER_ID}:${GROUP_ID} /var/www # ========== 创建容器用户结束 ========== RUN sed -i 's|http://deb.debian.org|https://mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources RUN apt-get update && apt-get install -y \ libpng-dev libonig-dev libzip-dev libicu-dev unzip git curl \ && docker-php-ext-install pdo_mysql mbstring bcmath gd zip intl \ && docker-php-ext-enable pdo_mysql mbstring bcmath gd zip intl COPY --from=composer:latest /usr/bin/composer /usr/bin/composer 4、创建 Nginx 配置文件,用于处理 HTTP 请求,并将请求转发至 PHP-FPM 容器。 vi /opt/filament/nginx/default.conf server { listen 80; server_name localhost; root /var/www/filament/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass app:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS $http_x_forwarded_proto; } location ~ /\.(?!well-known).* { deny all; } } 5、创建 Docker Compose 配置文件,用于定义所有服务(PHP、Nginx、MySQL 等)。 其中 Nginx 服务端口为 20080,MySQL 数据库端口为 23306,密码为 123456,可根据需求进行修改。 vi /opt/filament/compose.yaml version: '3' services: app: build: ./php networks: - internal volumes: - ./app:/var/www:rw nginx: image: nginx:1.24 networks: - internal ports: - "20080:80" volumes: - ./app:/var/www:rw - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:rw depends_on: - app node: image: node:20 networks: - internal volumes: - ./app:/var/www:rw command: tail -f /dev/null mysql: image: mysql:8.0.45 command: --default-authentication-plugin=mysql_native_password networks: - internal ports: - "23306:3306" environment: MYSQL_ROOT_PASSWORD: "123456" volumes: - ./mysql:/var/lib/mysql:rw restart: unless-stopped networks: internal: driver: bridge 6、进入 Docker 项目目录,拉取所有基础镜像。 cd /opt/filament docker compose pull # 查看所有镜像 docker images 7、构建并启动服务。 docker compose up -d --build # 检查运行状态 docker compose ps 配置数据库 在 MySQL 容器内创建并配置数据库,为 Laravel 提供存储。 1、进入 MySQL 容器。 docker exec -it filament-mysql-1 bash 2、使用 MySQL 客户端登录到数据库,输入密码。 mysql -uroot -p 3、创建一个名为 filament 的数据库,并设置字符集为 utf8mb4 。 CREATE DATABASE filament CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # 验证数据库 SHOW DATABASES; # 退出 MySQL 客户端 exit 安装 Composer 和 Laravel 通过 PHP 安装 Composer,并创建 Laravel 项目,同时进行相关配置。 注意:Filament 5.x 版本要求 Laravel v11.28+ 。 1、进入 PHP 容器。 docker exec -it filament-app-1 bash 2、更新包列表,并安装 vim 编辑器。 apt-get update apt-get install vim -y 3、使用 PHP 安装 Composer 依赖管理工具。 php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php --install-dir=/usr/local/bin --filename=composer php -r "unlink('composer-setup.php');" # 查看 Composer 版本 composer -V 4、安装 Laravel 依赖项。 apt-get install -y git unzip curl 5、创建 Laravel 项目,并指定版本为 11.0。 cd /var/www composer create-project laravel/laravel filament "^11.0" # 查看 Laravel 版本 cd /var/www/filament php artisan --version 6、确保 Laravel 的存储和缓存目录具有适当的权限,避免出现权限错误。 cd /var/www/filament chown -R www-data:www-data storage bootstrap/cache chmod -R 775 storage bootstrap/cache 7、配置数据库连接信息。 vi /var/www/filament/.env DB_CONNECTION=mysql DB_HOST=192.168.1.1 DB_PORT=23306 DB_DATABASE=filament DB_USERNAME=root DB_PASSWORD=123456 8、删除默认的 SQLite 数据库。 cd /var/www/filament rm database/database.sqlite 9、清理 Laravel 缓存。 php artisan config:clear php artisan cache:clear php artisan view:clear 10、执行数据库迁移,将数据库表结构同步到 MySQL 。 php artisan migrate 配置 Tailwind CSS 通过 Node.js 容器安装并配置 Tailwind CSS,确保前端样式的正常运行。 注意:Filament 5.x 版本要求 Tailwind CSS v4.1+ 。 1、进入 Node.js 容器。 docker exec -it filament-node-1 bash 2、更新包列表,并安装 vim 编辑器。 apt-get update apt-get install vim -y 3、安装 Tailwind CSS 及其相关插件。 cd /var/www/filament npm install -D tailwindcss@4.1 postcss autoprefixer npm install -D @tailwindcss/postcss npm install 4、修正 Tailwind CSS 入口文件。 vi resources/css/app.css @import "tailwindcss"; @import "tailwindcss/preflight" layer(base); @tailwind base; @tailwind components; @tailwind utilities; 5、修正 postcss.config.js 文件内容。 vi postcss.config.js import tailwindcss from '@tailwindcss/postcss'; import autoprefixer from 'autoprefixer'; export default { plugins: [tailwindcss, autoprefixer], }; 6、执行构建。 npm run build # 验证版本 cat package.json | grep tailwindcss 7、此时通过浏览器访问 http://server-ip:20080/ ,可以看到安装的 Laravel 应用。 安装 Filament 面板 进行 Filament 管理面板安装,创建管理员账户,并调整时区和语言设置。 1、进入 PHP 容器。 docker exec -it filament-app-1 bash 2、更新 Composer 依赖并安装 Filament 面板。 cd /var/www/filament composer update composer require filament/filament:"^5.0" php artisan filament:install --panels 3、安装完成后,系统会要求你为面板设置一个 ID(默认为 admin)。 What is the panel's ID? admin It must be unique to any others you have, and is used to reference the panel in your code. # 询问是否前往 GitHub 为项目点星,此处根据情况选择 All done! Would you like to show some love by starring the Filament repo on GitHub? ○ Yes / ● No 4、创建一个管理员账号,根据要求输入用户名、邮箱地址和密码。 php artisan make:filament-user 5、修改 Laravel 时区和语言设置。 cd /var/www/filament vi .env APP_TIMEZONE=PRC APP_LOCALE=zh_CN APP_FALLBACK_LOCALE=zh_CN APP_FAKER_LOCALE=zh_CN 6、完成后通过浏览器访问 http://server-ip:20080/admin/login ,即可登录到 Filament 后台管理页面。 升级 Filament 到最新版本 1、进入 PHP 容器。 docker exec -it filament-app-1 bash 2、更新 Filament 主包。 composer update filament/filament -W # 查看当前版本 composer show filament/filament 本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。通过 Docker 部署 Filament 后台管理系统https://blog.kobin.cn/blog/system/s2/3614.html DockerFilamentLaravelLinux 赞 (0) 0 0 生成海报 评论功能升级维护公告为响应国家网络信息安全合规要求,并进行全面的安全策略升级,本站自即日起暂时关闭博客的评论功能。在此期间,您将无法发表新的评论,但仍可正常浏览所有历史文章及现有评论。如果您遇到问题需要协助,可以选择在线留言,或者发送邮件到 chen@kobin.cn 。对于给您带来的不便,深表歉意。感谢您的理解与支持!KOBIN 技术随笔2025 年 8 月 26 日