acg-faka Docker & Self-Hosted Deployment

GitHub

个人发卡源码,发卡系统,二次元发卡系统,二次元发卡源码,发卡程序,动漫发卡,PHP发卡源码,异次元发卡

5,853 stars PHP PHP 37 files · ~34,596 tokens
RAW Compose
1. Pull Image (DOCKERHUB) docker pull library/acg-faka
2. Docker Run (1-Click Launch) docker run -d --name acg-faka -p 8080:8080 --restart always acg-faka:local
3. Podman Run podman run -d --name acg-faka -p 8080:8080 --restart always acg-faka:local
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/library/acg-faka:local
5. ORAS Pull (OCI Artifact) oras pull acg-faka:local
6. Compose Deployment docker compose up -d
docker-compose.yml
Download .yml
# 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: