启用本地 PHP 与前端资源热更新,并同步初始化脚本与健康检查。 Co-authored-by: 92451 <924518135@qq.com> Co-committed-by: 92451 <924518135@qq.com>
149 lines
4.9 KiB
YAML
149 lines
4.9 KiB
YAML
# 本地开发/测试用 Compose 文件
|
||
# - app 通过 runtime/.env 读取当前系统数据库配置
|
||
# - mysql 只用于首次登录和填写“系统数据库”前的临时引导
|
||
# - 保存系统数据库后,用户、设置和云数据库登记都来自共享系统数据库
|
||
#
|
||
# 标准启动:bash deploy/local-init.sh(自动判断是否需要重建镜像)
|
||
# 停止: docker compose -f docker-compose.local.yml down
|
||
# 日志: docker compose -f docker-compose.local.yml logs -f app
|
||
#
|
||
# 不要把生产 APP_KEY、其他开发者的 .env 或云数据库密码复制到本机。
|
||
|
||
services:
|
||
app:
|
||
build:
|
||
context: .
|
||
dockerfile: deploy/Dockerfile.local
|
||
image: jiangling_akaunting:local
|
||
container_name: jiangling_app
|
||
restart: unless-stopped
|
||
depends_on:
|
||
mysql:
|
||
condition: service_healthy
|
||
environment:
|
||
# Local test data entry uses PATCH requests; do not let the global
|
||
# firewall heuristics block the maintenance-only test environment.
|
||
FIREWALL_ENABLED: "false"
|
||
SUPPLIER_PAYABLE_MAINTENANCE_DB_CONNECTION: supplier_payable_maintenance
|
||
SUPPLIER_PAYABLE_MAINTENANCE_DB_DRIVER: mysql
|
||
SUPPLIER_PAYABLE_MAINTENANCE_DB_HOST: mysql
|
||
SUPPLIER_PAYABLE_MAINTENANCE_DB_PORT: 3306
|
||
SUPPLIER_PAYABLE_MAINTENANCE_DB_DATABASE: akaunting
|
||
SUPPLIER_PAYABLE_MAINTENANCE_DB_USERNAME: akaunting
|
||
SUPPLIER_PAYABLE_MAINTENANCE_DB_PASSWORD: akaunting123
|
||
SUPPLIER_PAYABLE_MAINTENANCE_DB_PREFIX: ak_
|
||
ports:
|
||
- "127.0.0.1:18088:18088"
|
||
volumes:
|
||
- ./runtime/.env:/var/www/html/.env
|
||
- ./runtime/bills.sqlite:/var/www/html/runtime/bills.sqlite:ro
|
||
- ./deploy/php-local.ini:/usr/local/etc/php/conf.d/zz-local-dev.ini:ro
|
||
- jiangling_storage:/var/www/html/storage
|
||
- jiangling_public:/var/www/html/public
|
||
- ./app:/var/www/html/app
|
||
- ./config:/var/www/html/config
|
||
- ./database:/var/www/html/database
|
||
- ./deploy:/var/www/html/deploy
|
||
- ./modules:/var/www/html/modules
|
||
- ./resources:/var/www/html/resources
|
||
- ./routes:/var/www/html/routes
|
||
- ./scripts:/var/www/html/scripts
|
||
- ./tests:/var/www/html/tests
|
||
networks:
|
||
- jiangling_net
|
||
healthcheck:
|
||
test: ["CMD", "jiangling-healthcheck"]
|
||
interval: 15s
|
||
timeout: 5s
|
||
retries: 10
|
||
start_period: 60s
|
||
|
||
# Laravel Mix watcher for local frontend development. The generated assets
|
||
# live in a shared volume so Apache serves the latest build immediately.
|
||
frontend:
|
||
image: jiangling_akaunting:local
|
||
container_name: jiangling_frontend
|
||
restart: unless-stopped
|
||
user: "www-data"
|
||
working_dir: /var/www/html
|
||
command: ["npm", "run", "watch-poll"]
|
||
environment:
|
||
NPM_CONFIG_UPDATE_NOTIFIER: "false"
|
||
volumes:
|
||
- jiangling_public:/var/www/html/public
|
||
- ./resources:/var/www/html/resources
|
||
networks:
|
||
- jiangling_net
|
||
|
||
mysql:
|
||
image: mysql:8.0
|
||
container_name: jiangling_mysql
|
||
restart: unless-stopped
|
||
# 这些凭据只属于回环地址上的临时引导库,不是团队共享数据库凭据。
|
||
environment:
|
||
MYSQL_ROOT_PASSWORD: rootpass
|
||
MYSQL_DATABASE: akaunting
|
||
MYSQL_USER: akaunting
|
||
MYSQL_PASSWORD: akaunting123
|
||
command:
|
||
- --character-set-server=utf8mb4
|
||
- --collation-server=utf8mb4_unicode_ci
|
||
- --default-authentication-plugin=mysql_native_password
|
||
volumes:
|
||
- jiangling_mysql:/var/lib/mysql
|
||
ports:
|
||
- "127.0.0.1:13306:3306"
|
||
networks:
|
||
- jiangling_net
|
||
healthcheck:
|
||
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-u", "root", "-p$$MYSQL_ROOT_PASSWORD"]
|
||
interval: 5s
|
||
timeout: 5s
|
||
retries: 20
|
||
start_period: 30s
|
||
|
||
# 按需启动:docker compose -f docker-compose.local.yml --profile analytics up -d clickhouse
|
||
# 普通页面开发不需要运行列式库。
|
||
clickhouse:
|
||
image: m.daocloud.io/docker.io/clickhouse/clickhouse-server:26.8.2.7-alpine
|
||
container_name: jiangling_clickhouse
|
||
profiles: ["analytics"]
|
||
restart: unless-stopped
|
||
environment:
|
||
CLICKHOUSE_DB: caiwu_business_analytics
|
||
CLICKHOUSE_USER: caiwu_app
|
||
CLICKHOUSE_PASSWORD: local-clickhouse-only
|
||
CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1
|
||
TZ: Asia/Shanghai
|
||
ports:
|
||
- "127.0.0.1:18123:8123"
|
||
volumes:
|
||
- jiangling_clickhouse:/var/lib/clickhouse
|
||
networks:
|
||
- jiangling_net
|
||
ulimits:
|
||
nofile:
|
||
soft: 262144
|
||
hard: 262144
|
||
healthcheck:
|
||
test: ["CMD-SHELL", "clickhouse-client --user \"$$CLICKHOUSE_USER\" --password \"$$CLICKHOUSE_PASSWORD\" --query 'SELECT 1' >/dev/null"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 12
|
||
start_period: 30s
|
||
|
||
volumes:
|
||
jiangling_storage:
|
||
name: jiangling_storage
|
||
jiangling_mysql:
|
||
name: jiangling_mysql
|
||
jiangling_clickhouse:
|
||
name: jiangling_clickhouse
|
||
jiangling_public:
|
||
name: jiangling_public
|
||
|
||
networks:
|
||
jiangling_net:
|
||
name: jiangling_net
|
||
driver: bridge
|