老师决定:他这台图床流量约 3 请求/分钟,MCP=5 意味着每 ~3 分钟才退休一个 worker, 换班开销可忽略;换班越勤,单个 worker 允许积累的内存天花板越低。故取回他原来的 5。 (中途试过 30,现按实测与他的偏好改回;env 覆盖机制 APACHE_MAX_CONNECTIONS_PER_CHILD 与 0=永不回收 的语义完全保留。) 同步改回:entrypoint.sh 默认值与旁注、build-image.yaml 6 处期望值(断言 + 自证清单 + 覆盖用例)、 Dockerfile 概览注释、docker-compose.yaml 注释。README 参数表本来就是 5,无需改。 验证:一次性容器集成跑 5 用例(默认→5、env=10→10、env=0→0、脏值 abc→回退 5 且不启动失败、 PHP_MEMORY_LIMIT 仍生效)+ apache2ctl -t = Syntax OK + memory_limit 仍 64M; 全仓 grep 无遗留的 30 期望值;Dockerfile 9 条 md5 自证 9/9。
63 lines
2.9 KiB
YAML
63 lines
2.9 KiB
YAML
version: '3'
|
||
services:
|
||
lskypro:
|
||
# 本 fork 的镜像(含 iOS 长按菜单修复)
|
||
image: ghcr.io/mole404/lsky-pro-docker:latest
|
||
restart: unless-stopped
|
||
hostname: lskypro
|
||
container_name: lskypro
|
||
environment:
|
||
- WEB_PORT=8089
|
||
# ---- Apache MPM(并发/内存占用):不写就用镜像内置的低配默认值 ----
|
||
# 逐项覆盖:写哪个改哪个,没写的保持默认。默认见 README「Apache MPM」一节:
|
||
# StartServers 2 / MinSpareServers 1 / MaxSpareServers 3 /
|
||
# MaxRequestWorkers 5 / MaxConnectionsPerChild 5 / KeepAlive Off
|
||
# 例:并发大一点、子进程处理 5000 个请求后回收(0 = 永不回收,合法但内存只涨不落)
|
||
# - APACHE_MAX_REQUEST_WORKERS=25
|
||
# - APACHE_MAX_CONNECTIONS_PER_CHILD=5000
|
||
# 例:开 KeepAlive。省内存建议把超时压到 2 秒;两个可选变量不设就跟随 Apache
|
||
# 发行版默认(5 秒 / 100)。别写 0 —— 那是「不限制」,不是「更省」。
|
||
# - APACHE_KEEP_ALIVE=On
|
||
# - APACHE_KEEPALIVE_TIMEOUT=2
|
||
# - APACHE_MAX_KEEPALIVE_REQUESTS=50
|
||
# 例:其余三个一般不用动
|
||
# - APACHE_START_SERVERS=2
|
||
# - APACHE_MIN_SPARE_SERVERS=1
|
||
# - APACHE_MAX_SPARE_SERVERS=3
|
||
# 写错值只会把那一项退回默认值 + 日志警告,不会让容器起不来。
|
||
#
|
||
# ---- PHP memory_limit(测试版默认 64M):不写就用镜像默认 64M ----
|
||
# 运行期覆盖、**不用重建镜像**。只接受 <数字>[KMG] 形状(如 256M / 1G),
|
||
# 脏值只忽略这一项并警告,不会让容器起不来。
|
||
# ⚠ 上传/表单上限仍是 100M(post_max_size / upload_max_filesize):处理大图若撞到
|
||
# 64M 上限,把它抬高(或调低那两个上传上限)。
|
||
# - PHP_MEMORY_LIMIT=256M
|
||
volumes:
|
||
- $PWD/web:/var/www/html/
|
||
ports:
|
||
- "9080:8089"
|
||
networks:
|
||
- lsky-net
|
||
|
||
# 默认用 SQLite(镜像自带,无需额外服务)—— 这也是本 fork 线上跑的方式。
|
||
#
|
||
# 想用 MySQL 就自己加一个 service,参考(注意两点:
|
||
# ① 密码**不要写死在 yaml 里**,从环境变量取,例如同目录建一个 .env 写 MYSQL_ROOT_PASSWORD=...
|
||
# ② 镜像别用 mysql:5.7(2018 年的版本、5.7 已 EOL),至少 8.0/8.4;
|
||
# 8.4 起默认认证插件变了,若沿用旧的 mysql_native_password 连接方式要先改应用侧配置):
|
||
#
|
||
# mysql-lsky:
|
||
# image: mysql:8.0
|
||
# restart: unless-stopped
|
||
# hostname: mysql-lsky
|
||
# container_name: mysql-lsky
|
||
# volumes:
|
||
# - $PWD/mysql/data:/var/lib/mysql
|
||
# environment:
|
||
# MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:?请在 .env 里设置 MYSQL_ROOT_PASSWORD}
|
||
# MYSQL_DATABASE: lsky-data
|
||
# networks:
|
||
# - lsky-net
|
||
|
||
networks:
|
||
lsky-net: {} |