# Production stack for a single VPS: just the app. Put a reverse proxy in front of # APP_PORT for TLS. # # docker compose up -d --build # # There is no database and no volume here any more. Rows, files and accounts all live in # Appwrite, so the container holds nothing that cannot be thrown away and rebuilt. That # also means `docker compose down -v` is no longer dangerous, and backups are Appwrite's # problem rather than this stack's. # # The catalogue is seeded from a laptop, not from here, so the 137 MB of seed input never # needs to reach the server at all. # # APP_PORT is set in .env, because a box running several projects cannot have two of # them claiming 3000. services: app: build: . restart: unless-stopped ports: # Bound to localhost: the proxy on the host reaches it, the internet does not. # Change APP_PORT, not the container side, which is always 3000. - '127.0.0.1:${APP_PORT:-3000}:3000' environment: APPWRITE_ENDPOINT: ${APPWRITE_ENDPOINT} APPWRITE_PROJECT_ID: ${APPWRITE_PROJECT_ID} APPWRITE_BUCKET_ID: ${APPWRITE_BUCKET_ID:-media} APPWRITE_DATABASE_ID: ${APPWRITE_DATABASE_ID:-training} APPWRITE_API_KEY: ${APPWRITE_API_KEY} SEED_USER_EMAIL: ${SEED_USER_EMAIL} SEED_USER_PASSWORD: ${SEED_USER_PASSWORD} SEED_USER_NAME: ${SEED_USER_NAME:-Admin}