树莓派Docker部署phpMyAdmin提交登录即提示自动登出问题求助
问题排查方案
- 修正db服务配置错误:当前配置中
db服务使用了build: jsurf/rpi-mariadb,而jsurf/rpi-mariadb是公开的预构建镜像,应改为image: jsurf/rpi-mariadb。错误使用build字段会导致容器启动异常,数据库服务未正常初始化,进而引发phpMyAdmin会话校验失败出现假登出报错。 - 替换为arm架构适配的phpMyAdmin镜像:默认
phpmyadmin镜像仅适配x86/amd64架构,树莓派为arm架构,架构不兼容会导致会话存储、请求校验逻辑异常,直接触发1440秒登出报错。可替换为arm适配镜像arm64v8/phpmyadmin(对应64位树莓派系统)或arm32v7/phpmyadmin(对应32位树莓派系统)。 - 修正配置不一致问题:
db服务中配置的MYSQL_ROOT_PASSWORD为password_test,但phpMyAdmin中配置的MYSQL_ROOT_PASSWORD为password_lol,权限校验不通过也会触发异常登出提示。同时可删除废弃的links配置,Docker Compose默认会为同个栈内服务创建内部互通网络,无需额外配置链路。 - 新增phpMyAdmin会话配置避免假超时:在phpMyAdmin的
environment字段下新增以下配置,强制指定会话加密密钥和超时时间:PMA_ABSOLUTE_URI: http://<树莓派本地IP>:8080/ PMA_CONFIG_blowfish_secret: "自定义不少于32位的随机字符串" PMA_SESSION_TIMEOUT: 3600
修正后可用的docker-compose.yml参考
version: '3.1' services: php: image: php:7.4-apache ports: - 80:80 volumes: - ./src:/var/www/html/ db: image: jsurf/rpi-mariadb restart: always container_name: db ports: - 3306:3306 volumes: - ./db_data:/var/lib/mysql/ environment: MYSQL_ROOT_PASSWORD: password_test MYSQL_DATABASE: test1 MYSQL_USER: testuser MYSQL_PASSWORD: password_lol phpmyadmin: image: arm64v8/phpmyadmin # 32位系统替换为arm32v7/phpmyadmin environment: PMA_PORT: 3306 PMA_HOST: db MYSQL_USER: testuser MYSQL_PASSWORD: password_lol MYSQL_ROOT_PASSWORD: password_test PMA_ABSOLUTE_URI: http://<树莓派本地IP>:8080/ PMA_CONFIG_blowfish_secret: "abcdefghijklmnopqrstuvwxyz123456" PMA_SESSION_TIMEOUT: 3600 ports: - 8080:80 depends_on: - db volumes: db_data: driver: local name: db_data
树莓派适配的数据库+管理工具组合推荐
- 数据库镜像优先选官方arm适配版本:
mariadb:latest、mysql:8.0目前均已原生支持arm64/arm32v7架构,无需使用第三方维护的镜像,稳定性更高。 - 轻量管理工具优先选Adminer:相比phpMyAdmin,Adminer资源占用更低,arm适配更完善,直接使用
arm64v8/adminer或arm32v7/adminer镜像即可,默认端口8080,启动后直接填写数据库服务名、账号密码即可登录。 - 若不需要web管理工具,可直接使用本地数据库客户端连接树莓派3306端口操作,资源占用最低。
内容的提问来源于stack exchange,提问作者ALZERCODE
相关产品推荐
相关产品推荐

