安装前修改以下目录和文件权限为777

chmod 777 runtime -R
chmod 777 application/database.php
chmod 777 application/config.php
chmod 777 public
chmod 777 application/extra/site.php
chmod 777 application/admin/command/Install
chmod 777 public/uploads
chmod 777 public/assets/js/addons.js
chmod 777 application/extra/addons.php

安装后修复以下目录和文件权限

chmod 644 application/database.php
chmod 644 application/config.php
chmod 755 public
chmod 755 application/admin/command/Install

docker镜像为官方mysql5.7,使用exec进入docker 使用mysql -uroot -p一直提示密码错误,删除数据重新构建还是一样问题。

最后发现原因是MYSQL_ROOT_PASSWORD密码格式只能是字母和数字,不能包含特殊符号,为了安全,密码加上了符号,把自己给坑了。

Dockerfile文件样例

ARG PHP_VERSION
# FROM php:${PHP_VERSION}-cli
FROM php:${PHP_VERSION}-fpm

# ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
# 手动下载install-php-extensions下Dockerfile目录
COPY --chmod=0755 install-php-extensions /usr/local/bin/

# 镜像源
RUN if [ -f "/etc/apt/sources.list.d/debian.sources" ]; then \
    sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list.d/debian.sources && \
    sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list.d/debian.sources; \
else \
    sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list && \
    sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list; \
fi

RUN install-php-extensions zip gd bcmath intl opcache pdo_mysql redis

WORKDIR /var/www

CMD ["php-fpm"]

EXPOSE 9000

支持的扩展可以通过 https://github.com/mlocati/docker-php-extension-installer 查看

多php版本支持, 在.bashrc创建别名

alias composer74='/usr/bin/php7.4 /usr/local/bin/composer'
alias composer82='/usr/bin/php8.2 /usr/local/bin/composer'