DATABASE_SETUP.md (2417B)
Chat Application with Custom SQLite Databases
This Docker setup allows each chat instance to use its own SQLite database, configured via environment variables.
Setup Instructions
`bash
cp .env.example .env
`
`env
# User and Group IDs for file permissions
UID=1000
GID=1000
# SQLite Database Paths for each chat instance
SQLITEDBPATH=/var/lib/sqlite/chat.sqlite
SQLITEDBPATH1=/var/lib/sqlite/generalchat.sqlite
SQLITEDBPATH2=/var/lib/sqlite/supportchat.sqlite
SQLITEDBPATH3=/var/lib/sqlite/privatechat.sqlite
`
`bash
docker-compose build
docker-compose up -d
`
Database Configuration
Each service uses its own SQLite database:
- php-fpm: Uses
SQLITE_DB_PATH(default:/var/lib/sqlite/chat.sqlite) - nginx-1 (chatterbox): Uses
SQLITE_DB_PATH_1(default:/var/lib/sqlite/chat1.sqlite) - nginx-2 (shitchat2): Uses
SQLITE_DB_PATH_2(default:/var/lib/sqlite/chat2.sqlite) - nginx-3 (shitchat3): Uses
SQLITE_DB_PATH_3(default:/var/lib/sqlite/chat3.sqlite)
Persistent Storage
Each chat instance has its own Docker volume for persistent SQLite database storage:
sqlite_data: For php-fpm servicesqlite_data_1: For nginx-1 servicesqlite_data_2: For nginx-2 servicesqlite_data_3: For nginx-3 service
Database Access
To access a specific chat's database for maintenance:
# Access the database for chat1
docker-compose exec nginx-1 sqlite3 /var/lib/sqlite/chat1.sqlite
# Access the database for chat2
docker-compose exec nginx-2 sqlite3 /var/lib/sqlite/chat2.sqlite
PHP Extensions Included
The custom Docker image includes all necessary PHP extensions:
- PDO (with SQLite, MySQL, PostgreSQL support)
- JSON
- MBSTRING
- CURL
- GD (for image processing/captchas)
- HASH
- SESSION
- OPENSSL
- ZIP
Environment Variables
You can override the default database paths by setting these environment variables:
SQLITE_DB_PATH: Main chat database pathSQLITE_DB_PATH_1: Chat 1 database pathSQLITE_DB_PATH_2: Chat 2 database pathSQLITE_DB_PATH_3: Chat 3 database path
The PHP application will automatically use the environment variable if set, otherwise it falls back to the default super_chat.sqlite.