Files
webmail/docker-compose.yml
T

55 lines
2.0 KiB
YAML

services:
webmail:
image: ghcr.io/bulwarkmail/webmail:latest
ports:
- "3000:3000"
environment:
- HOSTNAME=0.0.0.0 # Use "::" for IPv6
- PORT=3000
env_file:
- .env.local
volumes:
# Everything Bulwark keeps, in one volume:
# settings/ encrypted user settings (SETTINGS_DATA_DIR)
# admin/ config.json, policy.json, admin.json, plugins, themes,
# branding uploads (ADMIN_CONFIG_DIR)
# admin-state/ login timestamps, audit.log, setup token (ADMIN_STATE_DIR)
# plugin-secrets/ users' plugin credentials (PLUGIN_SECRETS_DIR)
# telemetry/ instance id and usage stats consent (TELEMETRY_DATA_DIR)
# version-check/ result of the last update check
#
# To lock the admin config after the setup wizard, give admin/ its own
# mount with `:ro` and set ADMIN_CONFIG_READONLY=true.
#
# Upgrading from the four volumes this file used to have
# (bulwark-settings, bulwark-admin, bulwark-admin-state,
# bulwark-telemetry)? Copy them into the new one before the first start,
# or the wizard runs again. With the project name from `docker volume ls`:
# docker compose down && docker compose create
# docker run --rm -v <project>_bulwark-settings:/old/settings \
# -v <project>_bulwark-admin:/old/admin \
# -v <project>_bulwark-admin-state:/old/admin-state \
# -v <project>_bulwark-telemetry:/old/telemetry \
# -v <project>_bulwark-data:/new alpine \
# sh -c 'cp -a /old/. /new/ && chown -R 1001:1001 /new'
# docker compose up -d
- bulwark-data:/app/data
healthcheck:
test:
[
"CMD",
"wget",
"--no-verbose",
"--tries=1",
"--spider",
"http://127.0.0.1:3000/api/health",
]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
restart: unless-stopped
volumes:
bulwark-data: