Files
lsky-pro-docker/docker-compose.yaml
mole404 2da63c7e9a chore(mem): MaxConnectionsPerChild 默认值改回 5(低流量下取最严内存纪律)
老师决定:他这台图床流量约 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。
2026-10-01 18:06:03 +08:00

63 lines
2.9 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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: {}