FIX: Resolve Docker build and deployment critical issues

- Upgrade Node.js to 24 for dependency compatibility (better-sqlite3, vite)
- Add openssl to Alpine image for SSL certificate generation
- Fix Docker file permissions for /app/config directory (node user access)
- Update npm syntax: --only=production → --omit=dev (modern npm)
- Implement persistent configuration storage via Docker volumes
- Modify security checks to warn instead of exit for auto-generated keys
- Remove incorrect root Dockerfile/docker-compose.yml files
- Enable proper SSL/TLS certificate auto-generation in containers

All Docker deployment issues resolved. Application now starts successfully
with persistent configuration and auto-generated security keys.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
ZacharyZcR
2025-09-23 06:52:08 +08:00
parent 2a37ea0f8c
commit 009f258996
10 changed files with 149 additions and 260 deletions

24
ssl/termix.crt Normal file
View File

@@ -0,0 +1,24 @@
-----BEGIN CERTIFICATE-----
MIID/zCCAuegAwIBAgIUTPIoBu3lyT70xPH7WYr4Ow/cgbIwDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCVVMxDjAMBgNVBAgMBVN0YXRlMQ0wCwYDVQQHDARDaXR5
MQ8wDQYDVQQKDAZUZXJtaXgxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxEjAQBgNV
BAMMCWxvY2FsaG9zdDAeFw0yNTA5MjIyMjAzMTNaFw0yNjA5MjIyMjAzMTNaMGkx
CzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVTdGF0ZTENMAsGA1UEBwwEQ2l0eTEPMA0G
A1UECgwGVGVybWl4MRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRIwEAYDVQQDDAls
b2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5H+LHG8Ub
p7fyxG6yqKmaP17pY5QlPnySBvmbgHclqRc5ymVcrghBa9q7pgkEmDrR2LH+oge/
al6dvH7c9F7Z9pgaVaBnmbuPzyJerewVANXy7RtxA248xYGJ5U7Mr6ApWSaSBVwO
UwTjKozjPvjFl+TbVrTZajSS+Qyx8bmThqJALnVeyolF87CXjZqrGqe1/+pWvrkz
ts4uvTzUrVWTtRP4avAOsA60KMCpFVmdIdNFmOwMNAQTrOKHMd8hfODUE7d9Xvcs
dTXiZGXXbv73LD6bEnbtG5RDYU6NkqDC8hyClVgTPujTMC9Fl3LxGQFZ4ni0Ua33
XXS+uNyX4rafAgMBAAGjgZ4wgZswCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwYgYD
VR0RBFswWYIJbG9jYWxob3N0ggkxMjcuMC4wLjGCCyoubG9jYWxob3N0ggx0ZXJt
aXgubG9jYWyCDioudGVybWl4LmxvY2FshwR/AAABhxAAAAAAAAAAAAAAAAAAAAAB
MB0GA1UdDgQWBBQ/oPi5PKU6VNUBfpZSGDWjvqB0eDANBgkqhkiG9w0BAQsFAAOC
AQEAti0BW7JckfJMcVVFb8eINTwlSsk+MoGORHIjTsaw2o2lQUmukm0I0dfuG1ef
6YKoW5zMRFL8HumlzGB9JWcbmMoWxPv8/oHk4yuYO6zfo17PK6NxfZTlmMdmezm5
vt0RDIhZScRQxDeiZomDB6ECamMdCUicUg9Ce+xZktVN1GdhCVNK/ReUtvONJ6JQ
leIcWOTXG2oOe4OiaHaEmRbOXOjLN+Ii2beacRXxCV5pZBMp0KCDq2FCTn+ffAMZ
0cQ81S5NrWHUNVwzpapJiH2k8EhnRisc3KXFoNJ+kytSdQa6SkxDAb4G6JhYT+Il
cahHz3r7n1/Q3D3mVSVx+CPBdw==
-----END CERTIFICATE-----

28
ssl/termix.key Normal file
View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5H+LHG8Ubp7fy
xG6yqKmaP17pY5QlPnySBvmbgHclqRc5ymVcrghBa9q7pgkEmDrR2LH+oge/al6d
vH7c9F7Z9pgaVaBnmbuPzyJerewVANXy7RtxA248xYGJ5U7Mr6ApWSaSBVwOUwTj
KozjPvjFl+TbVrTZajSS+Qyx8bmThqJALnVeyolF87CXjZqrGqe1/+pWvrkzts4u
vTzUrVWTtRP4avAOsA60KMCpFVmdIdNFmOwMNAQTrOKHMd8hfODUE7d9XvcsdTXi
ZGXXbv73LD6bEnbtG5RDYU6NkqDC8hyClVgTPujTMC9Fl3LxGQFZ4ni0Ua33XXS+
uNyX4rafAgMBAAECggEAQLRq5NIJfmWMT1+mG28FPMMajvO9s5jYHIgwlU/9FR45
XnsmG5M+knM6tCzP6Rm2MWOOryP+FkL9CB/6rYsCXiepOUcldiCPJLAu4K3knuC4
ZxzF4yXiUX5tDQAnnzZhgiJFb3NNHjqZMjdMoB8B/7pcBOgU9QsAjkBbVhTZmryz
UkmDqa6DZYgFHZfNVPVKi7CvhNeJE5gDeUSKjpPWwuI6k9dUWQ7oXgEfwXiYKQDa
xnU3HXI+7kSomRCKPSgxZygHrtHW/0l+hLAr0D3pL89AaDqJDqj8H/HJyHsHj9hn
ONKXZeyhs+B/vO/MsofKWw9yQfkZwcEQNXRmG+IM0QKBgQDhaBl0qnxWNRjSUh+Q
irt0Cuef9pofYDRLTr6/1uqD7eBp5RtAdSjfVBhaiKu7t8co/b7VVcn72p5ubShb
ApZbd5SGLJeynxI+1jBh1o7DO54P9j456oO9Tl5ra+5xQOPUABnsedS5D2D9pAvj
K8zpq6tdw6xqR49Uq7rNyiY7jwKBgQDSQCi9aYgHMzdRp7pk1/kmPDMjYfVchQEB
KLzWa1G3ItmD3rUfH/zW/1qR/DigOwc3qb885hBlv3qSAuyHMR4ugn7b8dyLCA7/
UNZwqWk7xl5luW6yYHyYZqSTvwh+fUGS+kGG37GjWHlcpzu20MOJLcA5VtslckuT
JuJecJKL8QKBgA06VLQaBS3x88Dz/NI4sgN/WFR03lqVBLyepGcRr7WKUi8kuNKx
jXJ9tugpORrNEC0Bpx9R54aWL9H/Ke0dW8GGZPryxvw+hY2WeERlmP8wEniRVNmF
P7HuVXAsZ1PSIQyh7OOJysgJdQGtjN0KBv53ipj4ELgz9t9bLJ1DDbdVAoGBANF+
VlmtTnoGIUe+fa4/uKTNdRL7Z3ThngeepNJtqsV09xE7lnNF9zPuyjsN+wpE5sMi
40d14b7QVPwp564pVe533pmfW+Y4iGEEFje5xf5mgOaRJuib1WoxVClXPspyWiVu
MF6Ig8LDxGF6zLgzObJ1IMTBc6jTQtSD+SiquIqxAoGAdXPEEtpasCHaKCmhFgAt
kkPvUkR+TEKh+F2awHf/WmNwCpE8NsXhdyGgNh1PP8XU9+xYRegtdU3cGQmAOCLz
wTSLQczr0APrCbEXu2wmMJX051/zBt9dwaEwwIEBj0ZcZ2wEVwvKl+5jxIDrgOfW
Ho14/p6rLWL000/ZbCeIpH0=
-----END PRIVATE KEY-----