个人发卡源码,发卡系统,二次元发卡系统,二次元发卡源码,发卡程序,动漫发卡,PHP发卡源码,异次元发卡
docker pull library/acg-faka
docker run -d --name acg-faka -p 8080:8080 --restart always acg-faka:local
podman run -d --name acg-faka -p 8080:8080 --restart always acg-faka:local
skopeo inspect docker://docker.io/library/acg-faka:local
oras pull acg-faka:local
docker compose up -d
# acg-faka 一键部署。
#
# docker compose up -d
#
# 就这一条命令。不需要 .env,不需要改任何文件,不需要想数据库密码 ——
# 内置 MySQL 的密码首次启动时随机生成并保存在密钥卷里,安装向导会自动读到,
# 打开 http://localhost:8080 直接开始装。
services:
# 首次启动生成随机数据库密码;已存在则原样保留。
# 借用 mysql 镜像跑一个 shell,省掉再拉一个 busybox。
secrets-init:
image: mysql:5.7
platform: linux/amd64
container_name: acg-faka-secrets-init
restart: "no"
entrypoint: ["/bin/sh", "/secrets-init.sh"]
volumes:
- ./docker/secrets-init.sh:/secrets-init.sh:ro
- acg_secrets:/secrets
app:
build:
context: .
dockerfile: Dockerfile
image: acg-faka:local
container_name: acg-faka-app
restart: unless-stopped
depends_on:
mysql:
condition: service_healthy
redis:
condition: service_started
ports:
- "${ACG_HTTP_PORT:-8080}:80"
environment:
TZ: Asia/Shanghai
# 安装向导据此自动填好内置数据库的连接信息,用户不用输入任何东西
ACG_DB_HOST: mysql
ACG_DB_PORT: "3306"
ACG_DB_DATABASE: acg_faka
ACG_DB_USERNAME: acg
ACG_DB_PASSWORD_FILE: /secrets/mysql_app
ACG_DB_PREFIX: acg_
# 有 redis 就把会话放 redis;不设这个变量时 entrypoint 会自动退回文件会话
ACG_REDIS_HOST: redis
ACG_REDIS_PORT: "6379"
volumes:
- acg_secrets:/secrets:ro
# 镜像里站点的可写目录(配置/运行时/上传/插件/支付/模板/安装锁)都软链到 /data,
# 挂这一个卷就全保住了。别再按老结构逐个挂到 /var/www/html/... —— 那些路径
# 现在是软链,挂上去会把软链盖掉,站点起不来。
- acg_data:/data
mysql:
image: mysql:5.7
# MySQL 5.7 官方只发 amd64 镜像。ARM 机器(Apple Silicon / Ampere / Graviton)
# 会通过 qemu 模拟运行,能跑但偏慢;想要原生性能就把这两行换成 mariadb:10.6。
platform: linux/amd64
container_name: acg-faka-mysql
restart: unless-stopped
depends_on:
secrets-init:
condition: service_completed_successfully
environment:
MYSQL_ROOT_PASSWORD_FILE: /secrets/mysql_root
MYSQL_DATABASE: acg_faka
MYSQL_USER: acg
MYSQL_PASSWORD_FILE: /secrets/mysql_app
TZ: Asia/Shanghai
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --innodb-buffer-pool-size=256M
- --max-connections=200
volumes:
- acg_secrets:/secrets:ro
- acg_mysql:/var/lib/mysql
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p\"$$(cat /secrets/mysql_root)\" --silent"]
interval: 5s
timeout: 5s
retries: 40
start_period: 30s
redis:
image: redis:7.2-alpine
container_name: acg-faka-redis
restart: unless-stopped
command: ["redis-server", "--appendonly", "yes"]
volumes:
- acg_redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 5
volumes:
acg_secrets:
acg_data:
acg_mysql:
acg_redis: