Self-host compose stack and production stability fixes
这个提交包含在:
@@ -1,4 +1,40 @@
|
||||
services:
|
||||
db:
|
||||
image: mysql:8.4
|
||||
command:
|
||||
- --character-set-server=utf8mb4
|
||||
- --collation-server=utf8mb4_unicode_ci
|
||||
environment:
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE:-tennis_training_hub}
|
||||
MYSQL_USER: ${MYSQL_USER:-tennis}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-tennis_password}
|
||||
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-change-this-root-password}
|
||||
volumes:
|
||||
- db-data:/var/lib/mysql
|
||||
ports:
|
||||
- "127.0.0.1:3306:3306"
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD --silent"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 12
|
||||
restart: unless-stopped
|
||||
|
||||
migrate:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
target: build
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
DATABASE_URL: mysql://${MYSQL_USER:-tennis}:${MYSQL_PASSWORD:-tennis_password}@db:3306/${MYSQL_DATABASE:-tennis_training_hub}
|
||||
command: ["pnpm", "exec", "drizzle-kit", "migrate"]
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
restart: "no"
|
||||
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
@@ -7,12 +43,21 @@ services:
|
||||
- .env
|
||||
environment:
|
||||
PORT: 3000
|
||||
DATABASE_URL: mysql://${MYSQL_USER:-tennis}:${MYSQL_PASSWORD:-tennis_password}@db:3306/${MYSQL_DATABASE:-tennis_training_hub}
|
||||
MEDIA_SERVICE_URL: http://media:8081
|
||||
LOCAL_STORAGE_DIR: /data/app/storage
|
||||
NODE_ENV: production
|
||||
ports:
|
||||
- "3000:3000"
|
||||
- "127.0.0.1:3002:3000"
|
||||
volumes:
|
||||
- app-data:/data/app
|
||||
depends_on:
|
||||
- media
|
||||
db:
|
||||
condition: service_healthy
|
||||
migrate:
|
||||
condition: service_completed_successfully
|
||||
media:
|
||||
condition: service_started
|
||||
restart: unless-stopped
|
||||
|
||||
media:
|
||||
@@ -24,7 +69,7 @@ services:
|
||||
MEDIA_DATA_DIR: /data/media
|
||||
MEDIA_EMBEDDED_WORKER: "0"
|
||||
ports:
|
||||
- "8081:8081"
|
||||
- "127.0.0.1:8081:8081"
|
||||
volumes:
|
||||
- media-data:/data/media
|
||||
restart: unless-stopped
|
||||
@@ -44,4 +89,6 @@ services:
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
app-data:
|
||||
db-data:
|
||||
media-data:
|
||||
|
||||
在新工单中引用
屏蔽一个用户